TCP外网反连接内网失败,请求指教!
服务器端:
sockaddr_in acc_addr;
int addSize = sizeof(sockaddr);
SOCKET s = accept(sock, (sockaddr*)&acc_addr, &addSize);
以上是接收客户端发起的连接请求——成功;
然后服务器端又通过以下方式向客户端发起连接请求——失败。
sockaddr_in addr2;
addr2.sin_family = acc_addr.sin_family;
addr2. sin_port = acc_addr.sin_port; //服务器端得到的客户端外网端口
addr2. sin_addr.s_addr = acc_addr.sin_addr; //服务器端得到的客户端外网IP
connect(sock2, (sockaddr *)&addr2, sizeof(sockaddr));
客户端:
int res = ms.Connect(sock, serverIP, port);
sockaddr_in in_addr;
int nAddrLen = sizeof(sockaddr);
int res = getsockname(sock, (sockaddr *)&in_addr, &nAddrLen);
unsigned short port1 = ntohs(in_addr.sin_port);
AfxBeginThread((AFX_THREADPROC)TCP_ThreadListen, (LPVOID)port1);//在客户端监听port1端口,监听成功