android 之间通信,Android设备之间通过Wifi通信

该博客主要展示了如何在Android平台上实现一个简单的Socket服务器,监听特定端口并接收客户端连接。当客户端连接到服务器时,服务器读取客户端发送的数据,并作出响应,将消息回传给客户端,同时在Android应用中展示收到的消息。此过程涉及到了网络编程的基本概念,如ServerSocket、Socket、InputStreamReader、PrintWriter等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecom.example.socketserver;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;importjava.util.List;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Button;importandroid.widget.Toast;importcom.koushikdutta.async.callback.CompletedCallback;importcom.koushikdutta.async.http.WebSocket;importcom.koushikdutta.async.http.WebSocket.StringCallback;importcom.koushikdutta.async.http.libcore.RequestHeaders;importcom.koushikdutta.async.http.server.AsyncHttpServer;importcom.koushikdutta.async.http.server.AsyncHttpServer.WebSocketRequestCallback;importcom.koushikdutta.async.http.server.AsyncHttpServerRequest;importcom.koushikdutta.async.http.server.AsyncHttpServerResponse;importcom.koushikdutta.async.http.server.HttpServerRequestCallback;public class MainActivity extendsActivity {privateButton btnStart;privateServerSocket serverSocket;privateBufferedReader in;privatePrintWriter out;private Handler hander = newHandler(){

@Overridepublic voidhandleMessage(Message msg) {//TODO Auto-generated method stub

super.handleMessage(msg);

String s=(String)msg.obj;

Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();

}

};

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btnStart=(Button)findViewById(R.id.button1);

btnStart.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View v) {//TODO Auto-generated method stub

newServerThread().start();//在新线程中启动SocketServer...

}

});

}

@Overridepublic booleanonCreateOptionsMenu(Menu menu) {//Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);return true;

}

@Overridepublic booleanonOptionsItemSelected(MenuItem item) {//Handle action bar item clicks here. The action bar will//automatically handle clicks on the Home/Up button, so long//as you specify a parent activity in AndroidManifest.xml.

int id =item.getItemId();if (id ==R.id.action_settings) {return true;

}return super.onOptionsItemSelected(item);

}

@Overrideprotected voidonStop() {//TODO Auto-generated method stub

super.onStop();

}private class ServerThread extendsThread{

@Overridepublic voidrun() {//TODO Auto-generated method stub

super.run();try{//serverSocket = new ServerSocket(50005);//默认的路由器地址为Address: 192.168.43.1

serverSocket = new ServerSocket(5000);while (true) {

Socket clientSocket= serverSocket.accept();//阻塞等待处理...

String remoteIP =clientSocket.getInetAddress().getHostAddress();int remotePort =clientSocket.getLocalPort();

System.out.println("A client connected. IP:" + remoteIP+ ", Port: " +remotePort);

System.out.println("server: receiving.............");//获得 client 端的输入输出流,为进行交互做准备

in = new BufferedReader(newInputStreamReader(

clientSocket.getInputStream()));

out= new PrintWriter(clientSocket.getOutputStream(), false);//获得 client 端发送的数据

String tmp =in.readLine();//String content = new String(tmp.getBytes("utf-8"));

System.out.println("Client message is: " +tmp);//向 client 端发送响应数据

out.println("Your message has been received successfully!.");//关闭各个流

out.close();

in.close();

Message message=hander.obtainMessage();

message.obj=tmp;

hander.sendMessage(message);try{

Thread.sleep(100);

}catch(InterruptedException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值