我和我的一位同事正在研究Android和Iphone应用程序之间的简单套接字通信。我们到目前为止所做的事情是我可以在另一个线程中向他发送字节数组并在服务中接收字节数组。但是我们面临的问题是,如果他不关闭套接字,我就无法阅读他发送给他的整个消息。但是我需要那个套接字,所以如果数据没问题或有问题,我可以给他回复。以下是我如何倾听他的消息:
thread = new Thread(new Runnable() {
public void run() {
try {
serverSocket = new ServerSocket(5000);
while(state){
client = serverSocket.accept();
client.setKeepAlive(true);
// LOGS
Log.d("","receivedBufferSize : "+serverSocket.getReceiveBufferSize());
Log.d("","is connected : "+client.isConnected());
Log.d("","port : "+client.getPort());
Log.d("","ipadress : "+client.getInetAddress().toString());
InputStream is = client.getInputStream();
Log.d("","is Size : "+is.available());
byte[] bytes = toByteArray(is);
for(int i=0;i<bytes.length;i++){
Log.d("","bytes["+i+"] : "+bytes[i]);
}
}
serverSocket.close();
Log.d("","client socket : "+client.isClosed() + " serverSocket : "+serverSocket.isClosed());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
因此,如果他没有关闭应用程序或者没有关闭套接字,我就坐在那条日志消息上:Log.d("","is Size : "+is.available());
并没有真正发生。关闭套接字后,我可以看到接收到的字节数组的字节。
知道我做错了什么或任何建议/帮助导致这种情况的原因?
提前致谢!
答案 0 :(得分:1)
实际上问题出在Iphone方面,它只是Objective C实现的输入/输出流问题。所以这段代码工作正常。