我在安卓平板电脑上运行了一个TCP客户端,并且在PC上运行了一个C++服务器。
我可以从我的平板电脑向PC发送数据,并且PC可以正常读取,但是当PC尝试向平板电脑发送消息时,平板电脑就收不到任何消息。它会在readLine()
调用中阻塞,尝试读取一些东西。
下面是Java方法发送并等待响应的代码:
@Override
protected Void doInBackground(Void... arg0)
{
String msg = "";
Socket socket = null;
DataOutputStream outToServer = null;
BufferedReader msgFromServer = null;
try
{
// Socket used for I/O with the server
socket = new Socket("192.168.20.100", 48501);
// Writing to the server
outToServer = new DataOutputStream( socket.getOutputStream() );
// Reading from the server
msgFromServer = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
DataInputStream iStrReader = new DataInputStream( socket.getInputStream() );
// Initial comm
outToServer.writeBytes( "MainCamConnect" );
msg = msgFromServer.readLine(); // Get stuck here
Log.d( "NETWORK", msg );
socket.close();
}
catch( UnknownHostException e )
{
e.printStackTrace();
}
catch( IOException e )
{
e.printStackTrace();
}
return( null );
}
我从电脑发送的消息是:“StartDelayTest\n”。我知道服务器可以正常发送消息,因为我用一个简单的C++ TCP客户端进行了测试,并且它工作得很好,但是当我在平板电脑上运行时,平板电脑无法接收任何内容。
编辑:
操作系统:Windows 7 64位专业版。
编辑2:
我在电脑上运行了Wireshark并确认数据包已被发送到正确的IP地址,因此问题确实出现在接收端(Android应用程序)上。
'\n'
的方式进行读取,因为你提到的行为听起来像是一个编码问题。 - matt b