从昨天搞到了现在,一直有问题,开始以为是线程通信问题,测试后发现不是,走了好多弯路。用两个真机模拟的,有时候没有LogCat,也不知道原因。
有一次发现提示read(),readline(),查了一下readLine()函数,原来是没有数据时,readLine()一直阻塞,直到接收数据。 但是在另一端也是处于阻塞状态。
使用这个函数socket.shutdownOutput(); 半关闭Socket,告诉readLine()函数没有数据了。 这时就不在阻塞了。 还有一种方法是“\r\n”,没有亲自测试。
</pre>服务器端,直接new的线程。<p><pre name="code" class="java"> Thread thread = new Thread(new Runnable() {
@Override
public void run() {
BufferedReader br = null;
String d;
Bundle bundle = new Bundle();
bundle.clear();
try {
ServerSocket serverSocket = new ServerSocket(10001);
while (true) {
context = "";// 临时接收数据使用
Message msg = Message.obtain();
Socket socket = serverSocket.accept();// 阻塞监听