【发布时间】:2019-02-03 00:31:39
【问题描述】:
我正在尝试在 Android 设备和 C# 应用程序之间发送一个简单的字符串
在安卓上作为客户端
Thread thread = new Thread() {
@Override
public void run() {
try {
Socket socket = new Socket("192.168.1.136",80);
DataOutputStream DOS = new DataOutputStream(socket.getOutputStream());
DOS.writeUTF("HELLO_WORLD");
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
};
thread.start();
在 PC 上使用 C# 作为服务器
byte[] byteReadStream = null;
IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 0);
TcpListener tcpl = new TcpListener(ipe);
while (true)
{
tcpl.Start();
TcpClient tcpc = tcpl.AcceptTcpClient();
byteReadStream = new byte[tcpc.Available];
tcpc.GetStream().Read(byteReadStream, 0, tcpc.Available);
Console.WriteLine(Encoding.Default.GetString(byteReadStream) + "\n");
}
我尝试使用特定的 IP 和端口它不起作用
蓝牙不工作
我在这个网站上尝试了几个发布的代码,都没有工作。所以也许这就是我缺少的东西。
请告诉我如何修复代码或以任何即时方式在 android 和 windows 应用程序之间发送字符串的更好方法。
【问题讨论】:
-
我不确定,但您正在端口 80 上打开一个套接字,另一个问题是您在 C# 中的套接字没有在特定端口上侦听...
-
客户端希望服务器监听 80 端口,但服务器监听的是随机端口。在 IPEndPoint 构造函数中指定一个具体端口。然后在客户端使用同一个端口
-
@NineBerry 我从未使用过 C# 套接字,但应该在 while 循环之外调用“tcpl.start”吗?我只是继续查看代码,它不遵循正常的 tcp 套接字流。
-
使用端口 80 是我最后一次测试。我确实尝试了几个端口,在防火墙中打开它们并禁用防火墙。我还尝试设置特定端口“9000”,但它不起作用。我总是从客户端无法访问主机。我以前也从未使用过套接字,所以我不确定正常的 tcp 套接字流是如何工作的。