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就可以直接接收发送到服务器端的数据??
那个不是随便设置的ip地址,而是loopback地址,相当于当前电脑。
我没写过c#,如果只看代码的话,这串代码应该就是监听了本地的8080端口后又向本地8080端口发送信息,当然会被自己接受到了。