繁体   English   中英

如何使用UDP段中的数据建立TCP连接?

[英]How do I use data from a UDP segment to establish a TCP connections?

我已经从UDP套接字fd接收到数据。 如何使用此信息从发送方建立TCP连接。 buf包含TCP端口。

struct sockaddr_storage remote_addr;
socklen_t remote_addr_len;

recvfrom(fd, buf, BUFSIZE, 0, (struct sockaddr *)&remote_addr, &remote_addr_len);

下面的代码是我的尝试,但不起作用。 我是套接字编程的新手,但由于试图弄清楚这一点,我不知所措。

newfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct hostent *info;
info = gethostbyname(remoteAddr.h_addr);

struct sockaddr_in newConn;
newConn.sin_family = AF_INET;
bcopy((char *)info->h_addr, (char *)&newConn.sin_addr.s_addr, info->h_length);
newConn.sin_port = htons(mesgTcpPort); //mesgTcpPort is of type int gotten from buf


connect(newfd,(struct sockaddr *)&newConn,sizeof newConn);

错误检查被省略。

您不需要gethostbyname ,因为UDP数据包的标头中包含IP地址,而不是名称(由recvfrom提供给您)。

但是,由于协议和端口不同,新连接将不与原始UDP连接相关联,因此新连接将不经过NAT,因此该方法的适用性有限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM