安卓/苹果手机插座通信



我和我的一位同事正在研究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());,实际上什么也没发生。在他关闭套接字后,我可以看到接收字节数组的字节数。

知道我做错了什么或任何类型的建议/帮助会导致这种情况吗?

提前感谢!

实际上问题出在Iphone方面,它只是Objective C实现的输入/输出流问题。所以这段代码工作正常。

最新更新