socket 怎样获取 tcp连接状态
void DumpTcpTable(PMIB_TCPTABLE pTcpTable) {charstrState[MAX_STRLEN];structin_addrinadLocal, inadRemote;DWORD dwRemotePort = 0;charszLocalIp[MAX_STRLEN];charszRemIp[MAX_STRLEN];if (pTcpTable != NULL){printf("TCP TABLEn");printf("%20s %10s %20s %10s %sn", "Loc Addr", "Loc Port", "Rem Addr","Rem Port", "State");for (UINT i = 0; i < pTcpTable->dwNumEntries; ++i){switch (pTcpTable->table[i].dwState){case MIB_TCP_STATE_CLOSED:strcpy(strState, "CLOSED");break;case MIB_TCP_STATE_TIME_WAIT:strcpy(strState, "TIME_WAIT");break;case MIB_TCP_STATE_LAST_ACK:strcpy(strState, "LAST_ACK");break;case MIB_TCP_STATE_CLOSING:strcpy(strState, "CLOSING");break;case MIB_TCP_STATE_CLOSE_WAIT:strcpy(strState, "CLOSE_WAIT");break;case MIB_TCP_STATE_FIN_WAIT1:strcpy(strState, "FIN_WAIT1");break;case MIB_TCP_STATE_ESTAB:strcpy(strState, "ESTAB");break;case MIB_TCP_STATE_SYN_RCVD:strcpy(strState, "SYN_RCVD");break;case MIB_TCP_STATE_SYN_SENT:strcpy(strState, "SYN_SENT");break;case MIB_TCP_STATE_LISTEN:strcpy(strState, "LISTEN");break;case MIB_TCP_STATE_DELETE_TCB:strcpy(strState, "DELETE");break;default:printf("Error: unknown state!n");break;}inadLocal.s_addr = pTcpTable->table[i].dwLocalAddr;if (strcmp(strState, "LISTEN") != 0){dwRemotePort = pTcpTable->table[i].dwRemotePort;}elsedwRemotePort = 0;inadRemote.s_addr = pTcpTable->table[i].dwRemoteAddr;strcpy(szLocalIp, inet_ntoa(inadLocal));strcpy(szRemIp, inet_ntoa(inadRemote));printf("%20s %10u %20s %10u %sn",szLocalIp,ntohs((unsigned short)(0x0000FFFF & pTcpTable->table[i].dwLocalPort)),szRemIp, ntohs((unsigned short)(0x0000FFFF & dwRemotePort)),strState);}} }
使用socket的Receive方法,如果返回值是0,说明断开连接了,如果返回值非0,说明连接正常。

局域网TCP服务器,需要外网能访问,怎么做?
首先你要明白路由是不是共享式NAT上网的,也就是说router port nat出去的数据是一直堆叠或者持续变动的,而不做端口映射基本没有实现的可能! 当然如果是静态NAT,那么直接做静态NAT就可以了!如楼上灰鸽子,是直接通过本地服务端(中灰鸽子端)连接广域网客户端(控制端),然后服务端和建立的联系。如通过80端口出数据,穿透防火墙等等。你可以尝试修改数据包出去的port,同时在两个端进行修改!-------------抓取到数据包的时候注意地址段,关键在于让路由到router nat到数据包的时候,能找到你的主机A或者W。 你可以参照一些三层更新之类的软件。
另加个辅助连接的服务器,远程控制软件TeamViewer就是这样做的;路由器上的UPnP功能也可以啊,迅雷上就可以开启UPnP自动映射端口功能
【我是楼主,修改不了了,新开个号来说明下】 我有认真看了那篇文章。说下我的具体实现思路吧:W为WEB服务器,提供HTTPS为位于NAT下的TCP服务器A为需要连接S的TCP客户端首先,S用TCP方式登录W,W记录下S的外口IP及端口A想要向S发起TCP连接,那么A先用TCP方式向W发起HTTP请求,W把S的外口IP及端口反馈给A,并记录下A的IP及端口W通知S“A要对你进行连接”,并把A的外口IP及端口发送给SS接收到通知后,向A发起一次TCP连接,并转为监听状态,同时告诉W“我准备好接受连接了”W再通知A“可以进行连接”最后,A向S发起TCP连接请求 整个就是UDP打洞的原理。只是之前一直没想到TCP也可以这么干。大家说说看这样能不能实现?
这是一条动态的 端口影射 在 PAT 路由上 192.168.0.2 11111 10.0.0.2 22222HTTP 保留 10.0.0.2 22222载把这个消息 告诉 A A拿这个 连接能连接么?一个TCP 连接的 三握手 怎么 搭建 ?UDP 的我感觉可以。 不过 这样的技术确实存在 。迅雷 就是很典型的 是么? 共同学习吧 。
1 把你的计算机做成服务器 2 装黑客软件 友情提示:单开FTP文件传输协议很危险

Python TCP连接 服务器(Server)如何指定端口发送信息?
一般来说服务器的端口需要是固定的,否则无法发起连接。客户端的端口可以是随机的。

java 网络编程中 tcp连接问题。 例如编写聊天室 , c/s结构的c和s端都是不间断实现请求--响应 。
你的意思我差不多明白了,现在我跟你说下那个两个人猜拳的一个思路 服务端是可以查看客户端连接情况的你可以在客户端弄一个Map用服务端的IP作为键, 发送的消息作为值存放客户端发送消息后就存放在Map里面当服务端接收到两边客户端都有传入消息,就根据IP 取出值来比较然后将结果返回给客户端 其实那个多人聊天,需要所有人发言后才会公布广播的,也可以按照这个思路去做
c/s 就是一个不断请求响应的过程。 如果你是想做一个聊天室的话,想得到广播的内容,你就需要向服务器端发送请求,然后得到响应。也就是C端定时向S端发送请求。
每个客户端请求都给他分配不同得 端口号 并且用一个主端口号来监听请求。按这种思路就行了!
哦你是不是想写一个天黑请闭眼啊

如何检测TCP网络连接状态
用netstat查看tcp已连接状态的具体步骤: 1、同时按住“windows键”+“R”打开运行对话框;2、运行对话框中输入cmd,回车;3、输入netstat回车即可。注:netstat命令中各选项的含义如下:-a 显示所有socket,包括正在监听的。-c 每隔1秒就重新显示一遍,直到用户中断它。-i 显示所有网络接口的信息,格式“netstat -i”。-n 以网络IP地址代替名称,显示出网络连接情形。-r显示核心路由表,格式同“route -e”。-t 显示TCP协议的连接情况-u 显示UDP协议的连接情况。-v 显示正在进行的工作。-p 显示建立相关连接的程序名和PID。-b 显示在创建每个连接或侦听端口时涉及的可执行程序。-e 显示以太网统计。此选项可以与 -s 选项结合使用。-f 显示外部地址的完全限定域名(FQDN)。-o显示与每个连接相关的所属进程 ID。-s 显示每个协议的统计。-x 显示 NetworkDirect 连接、侦听器和共享端点。-y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。 一般用“netstat -na”命令来显示所有连接的端口并用数字表示。

本文由 在线网速测试 整理编辑,转载请注明出处。