UdpClient 的用法问题,愁死了,请大家帮忙。
这是在本机做的一个程序用作测试。本机的IP为127.0.0.1吧。请大家帮我分析一下,这些问题让我很郁闷,心理很憋屈,这到底是怎么回事啊?
问题都在注释中。
服务器端 :
using System;
using System.Collections.Generic;
using System.Text;
using
using
namespace UDPServer
{
class Program
{
static void Main(string[] args)
{
UdpClient receivingUdpClient = new UdpClient(12222);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
//问题一
//0不是说只要有效的端口都可以接收数据吗?为什么客户端的端口不等于12222的时候就接收不到数据了呢?
//问题二
//IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("124.110.0.1"), 0);//胡乱写的IP地址也能收到数据,郁闷。
//这里的"124.110.0.1",不是指定只接收这个IP地址的数据吗?那为什么这个可以接收到数据。
while (true)
{
try
{
Byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint);
if (receiveBytes.GetLength(0) > 0)
{
string returnData = Encoding.ASCII.GetString(receiveBytes);
Console.WriteLine("This is the message you received " +
returnData.ToString());
Console.WriteLine("This message was sent from " +
RemoteIpEndPoint.Address.ToString() +
" on their port number " +
RemoteIpEndPoint.Port.ToString());
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
}
客户端:
using System;
using System.Collections.Generic;
using System.Text;
using
using
namespace UDPClient
{
class Program
{
static void Main(string[] args)
{
UdpClient udpClient = new UdpClient();
Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there");
try
{
udpClient.Send(sendBytes, sendBytes.Length,"127.125.100.100", 12222);
//"127.125.100.100"不是指定的目的机的IP吗?结果发现只要第一个端的地址为127都可以发送成功,服务端也都可以接收到数据。为什么?
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
Console.ReadLine();
}
}
}