[英]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.