【发布时间】:2012-05-26 04:39:37
【问题描述】:
所以我有一个在 Androidt 平板电脑上运行的 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 );
}
我从 PC 发送的消息是:“StartDelayTest\n”
我知道服务器可以很好地发送消息,因为我用一个简单的 c++ TCP 客户端对其进行了测试,它工作得很好,但是当我在平板电脑上运行它时,平板电脑什么也得不到
编辑:
操作系统:Windows 7 64 位专业版
编辑 2:
我已经在我的电脑上运行了wireshark,我可以确认数据包正在发送到正确的地址IP,所以问题确实出在接收端(android应用程序)
【问题讨论】:
-
Windows 7 64 位专业版
-
您可能想尝试从套接字 inputStream 读取原始字节,和/或以不等到收到
'\n'的方式读取,因为您提到的行为听起来像编码问题。 -
我有同样的问题,但在我的情况下,我尝试使用另一台计算机(不是 java),我得到了相同的结果,所以我猜这是 LAN 而不是 android 的问题。但是,当我尝试通过我的 WAN IP 地址连接到服务器时,一切正常。
标签: java android tcp network-programming