Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从特定客户端接收udp数据包_C_Tcp_Udp_Ip_Port - Fatal编程技术网

C 从特定客户端接收udp数据包

C 从特定客户端接收udp数据包,c,tcp,udp,ip,port,C,Tcp,Udp,Ip,Port,我正在尝试实现UDP服务器的“接受”功能,就像TCP中的一样。因为我需要为每个客户保留一个通道。我的问题是如何让UDP套接字从特定客户端(特定客户端的ip和端口)接收Daata TCP使用从客户端接收请求的主套接字(在线程内)。一旦来自客户机的请求通信,主套接字就会打开另一个套接字(在另一个线程内)与该客户机通信。要实现这一机制,必须具备绑定套接字以从特定客户端接收数据包的能力。这种能力正是我所要求的。如何重新实现UDP套接字的“接受”功能?其中(据我所知)无法绑定套接字以从特定客户机接收。我的

我正在尝试实现UDP服务器的“接受”功能,就像TCP中的一样。因为我需要为每个客户保留一个通道。我的问题是如何让UDP套接字从特定客户端(特定客户端的ip和端口)接收Daata

TCP使用从客户端接收请求的主套接字(在线程内)。一旦来自客户机的请求通信,主套接字就会打开另一个套接字(在另一个线程内)与该客户机通信。要实现这一机制,必须具备绑定套接字以从特定客户端接收数据包的能力。这种能力正是我所要求的。如何重新实现UDP套接字的“接受”功能?其中(据我所知)无法绑定套接字以从特定客户机接收。我的问题是如何使之成为可能

要实现此机制,必须具备绑定套接字以从特定客户端接收数据包的能力

bind
不指定可以连接的远程客户端,而是指定数据应发送到的本地地址。这在UDP中与在TCP中相同。在TCP中,不可能只接受一个特定的客户机,但是可以接受一个连接,如果它是错误的客户机,只需关闭它即可

使用UDP,用户可以
绑定
套接字以在本地IP和端口上接收数据。还可以连接UDP套接字,仅从特定的客户端IP和端口获取数据。请注意,这与TCP中的
connect
不同:在TCP中,它主动建立连接(即在TCP握手期间交换数据包),而在UDP中,它只设置套接字上的对等地址


但是,仅将
连接到特定的客户端IP是不可能的<代码>连接
需要IP和端口。如果事先不知道客户端源端口,可以创建一个未连接但绑定的UDP套接字,在其上调用
recvfrom
,然后
connect
将套接字连接到客户端IP,如果它是预期的客户端,则返回
recvfrom
(或创建一个新的绑定和连接的套接字)。

您的问题不清楚。请将您的代码显示为,描述它当前的功能,然后描述您需要它做什么,而不是它没有做什么。帖子已编辑,希望它现在更好。谢谢不,请不要只是用文字描述代码。它几乎从来都不够精确。请构造一个说明上下文和问题的最小可复制示例。你的问题还是太不清楚了。可能相关的一般信息:UDP是一种无连接协议。一个UDP套接字可以从多个不同的客户端接收数据。不需要接受,因为这只与基于连接的协议相关。“绑定套接字以从特定客户端接收数据包的功能必须可用”是的,您可以通过IP/port/userContext的用户空间列表来实现。