【问题标题】:Receive UDP request on one port and send response through another port在一个端口上接收 UDP 请求并通过另一个端口发送响应
【发布时间】:2013-05-28 08:53:03
【问题描述】:

UDP 是一种无连接协议。在我的服务器中,我在侦听模式下使用了两个套接字:

sfd3000=CreateUDPSocketAndListen(3000);
sfd14000=CreateUDPSocketAndListen(4000); 

我正在使用

socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

创建套接字。

我正在使用一个套接字接收请求

 recvfrom(sfd3000, reqbuff,1024, 0,(struct sockaddr *)&clientinfo, (socklen_t *)&sinfolen);

我可以使用另一个侦听套接字发送响应,使用相同的 clientinfo 结构

sendto(sfd4000,respbuff,resplen, 0,(struct sockaddr *) &clientinfo, sinfolen);

这在 UDP 中是否可行,因为它是一种无连接协议?

【问题讨论】:

  • “监听套接字”是什么意思? listen() 不能与 UDP 套接字一起使用。你的意思是阅读/接收?是的,您可以使用sendto() 发送任何您想要的任何目的地地址。
  • 为什么?为什么不能通过接收请求的套接字发送响应?为什么要混淆客户?这里有什么问题?
  • 抱歉延迟回复。问题是我正在尝试从另一台机器发送响应。在一台机器上接收请求并从另一台机器发送所有响应。

标签: c linux udp


【解决方案1】:

你不需要监听 UDP 协议。 如果要读取一些数据,您可以打开并阻止读取/您可以在打开后写入数据。

In short you can send response through another port

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2021-11-04
    • 2012-02-25
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多