如何在没有socket的Android中使用TCP客户端

本文关键字:TCP 客户端 Android socket | 更新日期: 2023-09-27 18:06:08

我有一个c#的TCP服务器和一个c#的TCP客户端,现在我需要一个Android的TCP客户端。

我发现的所有例子都与套接字有关,但我使用的是一个简单的TCP客户端,所以它们不工作。

现在我的c# TCP客户端是这样的:

TcpClient client = new TcpClient("127.0.0.1", 1200);
        NetworkStream n = client.GetStream();
        Console.WriteLine("Insert name");
        string name= Console.ReadLine();
        byte[] message = Encoding.Unicode.GetBytes(name);
        n.Write(message, 0, message.Length);

Android中是否有对应的这个函数?

这是我正在尝试的实际android客户端,但这不起作用

InetAddress serverAddr = InetAddress.getByName("127.0.0.1");
        socket = new Socket(serverAddr, 1200);
        EditText et = (EditText) findViewById(R.id.EditText01);
        String str = et.getText().toString();
        PrintWriter out = new PrintWriter(new BufferedWriter(
                new OutputStreamWriter(socket.getOutputStream())),
                true);
        out.println(str);

如何在没有socket的Android中使用TCP客户端

首先,这一行:

InetAddress serverAddr = InetAddress.getByName(127.0.0.1);

包含语法错误。应该是:

InetAddress serverAddr = InetAddress.getByName("127.0.0.1");

第二,地址"127.0.0.1"指的是执行客户端的"同一台机器"。在您的c#程序中,服务器与客户端运行在同一台机器上,因此它可以工作。但在Android的情况下,没有服务器运行在"同一台机器"上,这是你的Android手机(如果它是模拟的,127.0.0.1指的是模拟的Android设备,而不是它工作的PC)。你必须为Android设备指定一个"好"地址,该地址指的是服务器执行的机器。

所以,问题不在于使用套接字

你可以简单地用这条线连接到你的服务器,如果你的服务器在你的PC上运行,也试着禁用你的防火墙。

Socket server= new Socket("192.168.1.1", 4444); // Enter your PC/Server IP address in place of 192.168.1.1