为了通过UDP连接接收数据报,我创建了一个UDPClient类型的对象。
receivedNotificationSock = new UdpClient();
然而,一旦完成并使用接收方法:
receivedHostNameBuffer=receivedNotificationSock.Receive(ref receivedNotificationIP);
我得到一个例外,说我必须调用bind方法。 但是UDPClient类中没有绑定方法。 如果可能的话,你们可以告诉我应该采取什么措施来克服这个例外。
答案 0 :(得分:1)
您需要了解更多有关套接字的信息。
所有套接字都有一个端口号。首先,你创建一个套接字 - 它本身几乎没用。它漂浮在那里。但是你绑定它 - 你给它分配一个端口号。 现在它很有用 - 现在您可以在其上发送和接收数据。
请记住,所有UDP通信都是由源的IP和端口的四元数据集以及目标的IP和端口定义的。新创建的套接字没有IP地址或端口;绑定为它提供IP地址和端口。
不幸的是,我不是C#程序员,所以我无法正确回答你的问题。但至少你知道为什么这很重要。
答案 1 :(得分:1)
将端口号传递给UDP客户端的构造函数。
receivedNotificationSock = new UdpClient(21000);
您可能需要更改防火墙设置以允许绑定,但是当您在开发计算机上首次运行时,通常会打开一个弹出窗口。
答案 2 :(得分:0)
对于Socket编程,您需要知道在客户端和服务器端需要执行的系统调用序列。
如果您正在撰写客户:
您打开一个socket
来电的套接字。
然后通过connect
电话
连接成功后
然后您使用send
或sendto
或write
会导致您接收到可以使用receive
或read
在服务器端
您创建了socket
bind
它到port
使用listen
开始在套接字上侦听来自各个客户端的传入连接。
有一种非阻塞的方式来监听连接以及select
系统调用。
一旦建立连接,您基本上可以读取请求并开始处理它。
这是C#中可能对您有用的示例。
http://www.developerfusion.com/article/3918/socket-programming-in-c-part-1/