1

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

知道我做错了什么或任何建议/帮助可能导致这种情况的原因吗?

提前致谢!

4

1 回答 1

1

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

于 2012-08-14T09:01:08.097 回答