概述
新建两个Android项目:(例如SocketServer和SocketClient)
简单起见,Server端只发送一条信息,Client端只接收信息。
Server端代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(12333);
while (true) {
Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
writer.write("Test Socketrn");
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
启动SocketServer,然后进adb shell,用netstat -tln查看端口占用情况,可以看到服务端已经成功运行:
client端代码:
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.text_view);
new Thread(new Runnable() {
@Override
public void run() {
try {
Socket socket = new Socket(InetAddress.getLocalHost(),
12333);
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
String line;
while ((line = reader.readLine()) != null) {
Log.i("socket client", line);
tv.setText(line);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
启动SocketClient,因为是本地连接,所以用InetAddress.getLocalHost()来获取本地服务地址。
这时候我们可以看到输出的Log信息,以及TextView上显示了我们接收到的信息!
注意点:
1.Server和Client的端口号要一致,且不能和其它端口冲突!
2.只要调用了reader.close() 或 writer.close()则建立起来的Socket通信将被关闭!
最后
以上就是淡定水池为你收集整理的Android不同apk之间通过ServerSocket和Socket通信的全部内容,希望文章能够帮你解决Android不同apk之间通过ServerSocket和Socket通信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复