我正在尝试通过Android app
将PC
的数据发送到TCP
。我用 PC到PC 进行了测试,工作正常。但是当我尝试从 Android发送到PC 时,Android就会卡住。 PC套接字和Android套接字之间有什么区别吗?我该如何解决?
服务器
byte[] buffer = new byte[1000];
IPAddress ipAddress = IPAddress.Parse("XXX.XXX.XXX.XXX");
IPEndPoint localEndpoint = new IPEndPoint(ipAddress, 8080);
Socket sock = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
sock.Bind(localEndpoint);
sock.Listen(5);
Socket confd = sock.Accept();
while (true) {
string data = null;
int b = confd.Receive(buffer);
data += Encoding.ASCII.GetString(buffer, 0, b);
Console.WriteLine("" + data);
}
客户端Android
IPAddress ipAddress = IPAddress.Parse("XXX.XXX.XXX.XXX");
IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, 8080);
Socket client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
try {
client.Connect(ipEndpoint);
string message = "What can i send for you?";
byte[] sendmsg = Encoding.ASCII.GetBytes(message);
int n = client.Send(sendmsg);
}
catch (Exception e) {
Toast.MakeText(Application.Context, e.ToString(), ToastLength.Short).Show();
}
答案 0 :(得分:0)
答案只是总结了评论中所说的内容。
问题似乎不是编程问题,而是网络配置问题。
在进行任何类型的网络通信时,从基础开始尝试追踪任何问题总是有帮助的。
因为这在使用PC时起作用 - >在同一主机上进行PC测试,然后在同一网络上的两台不同PC之间进行相同的测试。这将帮助您追踪是否是网络问题。
在这种情况下,您似乎通过移动网络访问,然后您必须使用您的公共IP地址而不是您的私人本地IP地址。为了找到这个,有许多服务,例如https://www.whatismyip.com 然后还要确保你的路由器&防火墙允许流量通过本地PC并根据需要进行端口转发。
为了避免通过移动网络,您还可以尝试通过USB和网络将手机连接到PC 此网站应该可以帮助您配置您的PC和手机,以实现此目的:https://android.stackexchange.com/questions/73168/how-to-use-pcs-internet-on-android-phone-through-usb-cable