我正在写一个应用程序,但我一点也不明白。我正在尝试从特定客户端接收数据。在 TCP 套接字中,accept 返回一个fd
数字,因此您可以通过该fd
数字与特定客户端进行通信。
在recvfrom
中,任何东西都不能指定从该客户端接收数据。它从发送的每个人那里接收数据。我正在尝试解决这个问题,但我不知道该怎么做。
第二个问题是,打开一个套接字后,我打开了另一个套接字。我向客户端发送第二个套接字号,客户端在第二个套接字上发送第二个数据。在服务器端,服务器侦听第一个套接字(而不是第二个套接字)。但是,尽管客户端从第二个套接字发送数据并且服务器侦听第一个套接字,但服务器会获取数据。我将两个套接字打印为整数,并看到两个不同。服务器如何读取在第一个套接字上的第二个套接字上发送的数据?
是的,我的问题有点复杂。基本上我说:
recvfrom(sock, &client, sizeof(Client), MSG_WAITALL, (struct sockaddr *)&clientAddr2, &size);
如何告诉特定客户(例如客户 2)在上面的行中收听?(在 TCP 套接字中,它是按fd
编号完成的,但在 UDP 套接字中是如何实现的?)。