C# socket的一个问题

        int dataLength;  //接收的数据长度
        byte[] dataBytes = new byte[1024];
        Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

        IPEndPoint iP = new IPEndPoint(IPAddress.Any, 8080);   //获取本地ip和端口 
        socket.Bind(iP);  //绑定本地端口,以便接收

        IPEndPoint remoteIPEnd = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080);  //服务器端口
        EndPoint endPoint = remoteIPEnd;
        Console.WriteLine("可以向服务器发送信息了");
        string tmp = Console.ReadLine();
        dataBytes = Encoding.Unicode.GetBytes(tmp);

        socket.SendTo(dataBytes, dataBytes.Length, SocketFlags.None, endPoint);
        while (true)
        {
            Console.WriteLine("正在等待接收发送的数据");
            dataLength = socket.ReceiveFrom(dataBytes, ref endPoint);  //返回接收到的字节数
            tmp = Encoding.Unicode.GetString(dataBytes);
            Console.WriteLine("接收到数据: {0}",tmp);
            if (tmp == "exit")
                break;
            Console.WriteLine("输入回送消息(exit推出)");
            tmp = Console.ReadLine();
            dataBytes = Encoding.Unicode.GetBytes(tmp);
            socket.SendTo(dataBytes, endPoint);
        }
        socket.Shutdown(SocketShutdown.Both);
        socket.Close();
        
        
        
        

"127.0.0.1"这个ip地址的问题,本地回送地址.
是不是不用服务器端发送回执,socket.ReceiveFrom就可以直接接收发送到服务器端的数据??

阅读 1.8k
1 个回答

那个不是随便设置的ip地址,而是loopback地址,相当于当前电脑。

我没写过c#,如果只看代码的话,这串代码应该就是监听了本地的8080端口后又向本地8080端口发送信息,当然会被自己接受到了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进