50,348
社区成员




socket = new Socket();
socket.setSoTimeout(1000);
socket.connect(new InetSocketAddress(server ip ,port));
os = socket.getOutputStream();
is = socket.getInputStream();
os.write((byte[]) msg.obj); //这个 msg.obj 是我要发送给服务器的数据
int ret[2];
char buf[100];
while (1){
/* 读出数据包 */
recv(client,buf,sizeof(buf),0);
//... 省略一堆处理数据的过程,在处理数据的时候,把两个要返回的值存放在了 ret 数组内
/* 返回结果,就是把 ret 数组写回去 */
send(client,ret,sizeof(ret),0);
}
byte[] data = new byte[8];
...
/* 他本来的代码是这样的,但我发现他会在 is.read(data) 这里会不停地阻塞下去,所以我就把他修改了一下 */
is.read(data);
Message msg = new Message();
msg.obj = data;
main_handler.sendMessage(msg);
/* 改成了下面这样,发现就能正常读取数据了。 */
while (is.available() == 0)
Thread.sleep(1000);
is.read(data);
Message msg = new Message();
msg.obj = data;
main_handler.sendMessage(msg);
send(client,ret,sizeof(ret),0);