0

为了通过 UDP 连接接收数据报,我创建了一个 UDPClient 类型的对象。

 receivedNotificationSock = new UdpClient();

但是一旦完成并使用接收方法:

 receivedHostNameBuffer=receivedNotificationSock.Receive(ref receivedNotificationIP);

我收到一个异常,说我必须调用 bind 方法。但是 UDPClient 类中没有 bind 方法。如果可能的话,你们能否向我提供代码,说明应该采取哪些措施来克服这个异常。

4

3 回答 3

1

将端口号传递给 UDP 客户端的构造函数。

 receivedNotificationSock = new UdpClient(21000);

您可能需要更改防火墙设置以允许绑定,尽管当您第一次在开发机器上运行它时通常会打开一个弹出窗口。

于 2012-09-03T07:33:03.197 回答
1

你需要我想知道更多关于套接字的知识。

所有套接字都有一个端口号。首先,您创建一个套接字——它本身几乎没有用。它只是漂浮在那里。但是然后你绑定它——你给它分配一个端口号。 现在它很有用 - 现在您可以在其上发送和接收数据。

请记住,所有 UDP 通信都是由源的 IP 和端口以及目标的 IP 和端口的四元数据集定义的。新创建的套接字没有 IP 地址或端口;绑定给它一个IP地址和端口。

不幸的是,我不是 C# 程序员,所以我无法正确回答您的问题。但至少你知道为什么它很重要。

于 2009-04-04T19:12:51.840 回答
0

对于 Socket proramming,您需要知道您需要在客户端和服务器端执行的系统调用序列。

如果您正在编写客户端

  1. 您打开一个带有socket呼叫的套接字。

  2. connect然后你通过调用连接到服务器端口

  3. 一旦连接成功

  4. 然后您使用 a sendorsendto 或 a将请求发送到服务器write

  5. 这会导致接收到您可以使用receive或读取的数据read

在服务器端

  1. 你创建一个socket

  2. bind它到一个port

  3. 使用listen. 有一种非阻塞的方式来监听连接以及select系统调用。

  4. 建立连接后,您基本上可以读取请求并开始处理它。

这是 C# 中的一个示例,可能对您有用。

http://www.developerfusion.com/article/3918/socket-programming-in-c-part-1/

于 2012-05-25T01:08:57.130 回答