【发布时间】:2016-08-17 22:14:06
【问题描述】:
我正在尝试通过TCP 将数据从我的Android app 发送到我的PC。我用 PC 到 PC 进行了测试并且工作正常。但是当我尝试从 Android 发送到 PC 时,Android 卡住了。 PC sockets和android sockets有什么区别,我该如何解决?
服务器
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);
}
客户端安卓
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();
}
【问题讨论】:
-
在处理网络通信时,首先检查基础知识总是有帮助的。确保没有防火墙或网络路由器阻止。尝试不同的端口(8080 很常见)。尝试不同的 IP 地址。确保您的 IP 地址在客户端和服务器中正确。您说您尝试过 PC -> PC,但这是在同一台 PC 上还是在不同的 PC 上?如果相同,请尝试不同。等等
-
我检查了所有,仍然可以工作 PC -> PC 但不是 Android -> PC。
-
大多数路由器不允许从 Wifi 到有线(PC?)网络的流量。确保它也有效。顺便说一句:IP 地址应该是本地地址 (192.168.x.x / 10.x.x.x) - 你不必屏蔽它们。
-
你是对的!无论如何我如何检查它?我现在没有 Wifi 选项。我的手机正在使用移动数据。
-
看起来是这样! Hostednetwork帮助了我。感谢所有有用的 cmets。如果您添加答案,我可以接受。
标签: c# android sockets xamarin tcp