2014-02-21 30 views
0

我使用交换机在同一LAN上的两台独立机器上使用winsock设置基本UDP服务器/客户机应用程序。我需要将数据从客户端的特定端口发送到服务器。C++ - 使用两台机器将端口分配给UDP客户机

我到目前为止所做的是服务器是两个套接字(一个用于发送,一个用于接收),并将接收端口绑定到7777.客户端还需要套接字(一个用于发送,一个用于接收)发送一个消息端口7777

现在的recvfrom()功能,我得到的发件人端口为一些任意数量35708.不过,我想发件人端口为8000说

我的问题是,我可以指定哪些端口的消息是从哪里发出的?

回答

0

如果在sendto()之前使用bind(),则可以选择设置端口,或者让网络堆栈确定端口。

struct sockaddr_in myaddr; 
... 
myaddr.sin_port = htons(PORT); /* where PORT is defined elsewhere */ 

myaddr.sin_port = htons(0); /* if zero, let the system determine the port */ 

BTW,我不知道这是否你的使用情况相符,但你并不需要设置两个插座用于双向通信。例如,请参阅:http://www.cs.rutgers.edu/~pxk/417/notes/sockets/udp.html

+0

谢谢,我设法弄清楚了。我之前看到过这个链接,并用它进行双向通信。我的主要问题是试图强制客户发送一个特定的端口号,这个“bind()”似乎已经起作用了。另一个问题本身就是,如果我只使用一个套接字发送/接收,发送者会收到它自己的消息,这很奇怪,因此为什么我使用了两个套接字 –