当android设备(仿真器)充当客户端并且pc应用程序充当服务器时,我的第一个tcp套接字连接工作正常(当您知道在客户端使用10.0.2.2作为服务器地址时)。
现在我需要将android端用作服务器,将pc应用程序用作客户端,并且根本没有连接。
两者都在同一台计算机上运行(模拟器中为android)。
Android方面
ServerSocket serverSocket = new ServerSocket(9301);
Socket socket = serverSocket.accept();
PC端
TcpClient dataClient = new TcpClient();
dataClient.BeginConnect( "127.0.0.1", 9301, Do, MyData);
// 127.0.0.1 just for testing, later there will be the real ip adress of the device
在模拟器的telnet会话(5554)中,我添加了一个这样的redir
redir add tcp:9301:9301
老实说,我绝对不确定redir。有谁知道我在做什么错,我为此而生气。
奇怪的是,使用此代码,客户端可以连接到任何服务器,服务器无法连接。
非常感谢
答案 0 :(得分:0)
第一个结论之一。似乎android模拟器有时收到的字节数少于发送的字节数。例如,我发送了一个约30000字节的文件,我只收到29987。有时候还可以。我使用PC / c#客户端进行了测试,连接效果完美,没有松动。当我测试android连接时,由于最多缺少15个字节,因此文件传输的70%已损坏。当我将服务器端更改为socket.SendFile时,结果会好得多,但也不会完美。我更新了协议,因此客户端知道会有多少字节,并且如果发生接收错误,我可以重新发送文件。我对使用真实设备和无线局域网的行为感到好奇。