android socket没有收到

时间:2015-03-13 12:00:24

标签: android sockets

我有一个简单的客户端,我正在从我的Android设备进行测试,我正在测试telnet服务器调用telehack.com。问题是当我从菜单项列表中请求某个选项时,数据被发送但未收到。 选项是来临(巨大的冒险)。我尝试了各种实现(socket,socketchannel和select),在发送advent后仍然遇到同样的问题没有收到数据,菜单中的其他选项工作正常。更糟糕的是,我从Playstore下载了各种telnet客户端,他们似乎遇到了同样的问题。 (除了似乎使用c ++ NDK套接字库的Mobile Telnet之外)。

另外,在Windows上查看和Wireshare和telnet客户端显示没有任何异常,并且数据被发回。

 public void run() {
   mRun = true;

    try {
        Socket sc = new Socket(SERVER_IP, SERVER_PORT);
        inBuffer = new DataInputStream(sc.getInputStream());
        outBuffer = new DataOutputStream(sc.getOutputStream());

        Log.e("TCP Client", "C: Connecting...");

        if (mConnectionListener != null)
            mConnectionListener.connectionStatusChanged(true);

        sc.setSoTimeout(5*60*1000);                    //Socket timeout = 4 minutes

        sc.setTcpNoDelay(true);
        sc.setKeepAlive(true);

        try {


            while (mRun) {


                int size = inBuffer.available();
                if (size > 0)
                {


                    byte[] readBuf = new byte[size];
                    inBuffer.read(readBuf);

1 个答案:

答案 0 :(得分:0)

available()方法可以获得所需的结果,但不一定如此。有些流只返回0.使用常量大小的读缓冲区:

byte[] buffer = new byte[4096];

int bytesRead = 0;
while ((bytesRead = in.read(buffer)) >= 0){
  // note that only the bytes 0 to bytesRead-1 are valid in buffer
}