【问题标题】:C++ - Assigning port to UDP client using two machinesC++ - 使用两台机器为UDP客户端分配端口
【发布时间】:2014-03-22 08:00:22
【问题描述】:

我正在使用一台交换机在同一 LAN 上的两台不同机器上使用 winsock 设置一个基本的 UDP 服务器/客户端应用程序。我需要将数据从客户端的特定端口发送到服务器。

到目前为止,我的做法是服务器是两个套接字(一个用于发送,一个用于接收)并将接收端口绑定到 7777。客户端还必须通过套接字(一个用于发送,一个用于接收)发送消息到 7777 端口。

现在在recvfrom() 函数中,我将发送者端口设为任意数字 35708。但我希望发送者端口为 8000。

我的问题是,我可以指定消息从哪个端口发送吗?

【问题讨论】:

    标签: c++ sockets udp client port


    【解决方案1】:

    如果在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 */
    

    顺便说一句,我不知道这是否符合您的用例,但您不需要为双向通信设置两个套接字。参见,例如:http://www.cs.rutgers.edu/~pxk/417/notes/sockets/udp.html

    【讨论】:

    • 谢谢,我也设法弄清楚了。我之前已经看到过该链接并将其用于双向通信。我的主要问题是试图强制客户端发送bind() 似乎有效的特定端口号。另一个问题本身是,如果我只使用一个套接字进行发送/接收,发件人会收到它自己的消息,这很奇怪,因此我使用了两个套接字
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多