UDP C#连接

时间:2012-04-04 07:10:59

标签: c# udp

我有一个如下所示的程序:

Socket receiveSocket = new Socket(AddressFamily.InterNetwork,
                                  SocketType.Dgram, ProtocolType.Udp);

EndPoint bindEndPoint = new IPEndPoint(IPAddress.Any, 3838);

byte[] recBuffer = new byte[256];

public Form1()
{
    InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
    receiveSocket.Bind(bindEndPoint);
    receiveSocket.Receive(recBuffer);
}

它正在工作,但当我想只听一个特定的IP地址时,它不起作用, 它抛出一个例子"请求的地址在上下文​​中无效"

新代码: EndPoint bindEndPoint = new IPEndPoint(IPAddress.Parse(" 192.168.40.1"),3838);

1 个答案:

答案 0 :(得分:2)

您绑定的IP地址应该是实际分配给计算机上网络接口的IP地址之一。

假设你有一个以太网接口和一个无线接口

  

以太网:192.168.1.40

     

无线:192.168.1.42

在套接字上调用Bind方法时,您会告诉它在哪个接口上 你想听数据。这可能是“其中任何一个”或仅仅是以太网接口。

我猜这不是你想要的?

也许您正试图限制谁可以与您的服务器建立连接

你可能正在寻找的是

var remoteEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.40"), 0)
receiveSocket.ReceiveFrom(buffer, remoteEndpoint);

这会限制您接受数据的来源。