chenlulouis

暴走笑话 杭州空调维修 杭州燃气灶维修 杭州洗衣机维修 上海ktv酒吧招聘 上海招聘 上海夜场招聘 上海夜场招聘

导航

socket编程

socket编码过程中,通过 netstat -ao(可以查看本服务器的活动连接数) 命令 分别在服务器和客户端上可以查看 连接 的情况

查看服务器端用 Socket监听8000端口, 可以看到 有来自于外部客户端的4个连接, Socket监听进程ID 1212 ,本地监听端口 8000, 外部地址的端口有4个

在其中一个客户端Socket所在机器 运行 netstat -ao

可以看到 本机地址端口是2400, 外部访问端口是8000  ,本机的socket客户端进程是2068

 

以上SOCKET的服务端和客户端程序通信协议是基于 TCP

 

State显示 established  表示 外部端口和内部端口“建立”了连接,当服务端SOCKET进程开始监听,但没有客户端连接它的时候,它的State状态是 listening

 

 

基于这个命令还可以查看 本机 某个通讯程序 需要对外开放的端口(本地监听端口)在服务器端 和 客户端 是否被防火墙挡住,而不能进行通讯。

 

 

其实IIS也是一个Socket服务端程序,它在默认80端口 监听所有外部客户端的请求,只不过它是基于http协议的,应为http协议是无状态的,保持的是短连接一个来回响应以后,在服务端就中断了连接 keepalive = false,这样就可以保证高并发, 服务器的很多端口不会因为客户端的长时间连接不释放而造成不够用的情况,导致后来的客户端程序因为无法获取端口而无法跟服务器进行通信, 而与此相反,如果一个基于TCP 协议的 Socket 的通讯协议 (比如IM ,分服务端和客户端程序) 当服务端监听足够多的客户端连接,而没有释放,容易导致接下来的客户端程序无法与服务端进行通讯(无法在服务端获取可用端口),这一切都是因为TCP是长连接 ,与HTTP不同,所以需要在服务端控制当客户端程序关闭socket_client,服务端也要马上关闭与其对应的socket_server(这个是有监听Socket的返回给服务器的)

 

 

还可以用工具TcpTrace 来监控基于TCP协议的 Socket程序

socket 服务端程序 监控的是8000端口, IP是 10.60.44.127

运行TcpTrace工具

代理监听端口设置为8080,目标服务器为Socket服务端 IP 10.60.44.127 端口是 服务端的真实监听端口 8000,  注意这个监控工具运行在 服务器机器上 而非客户端机器上

socket客户端程序 连接到 服务端 需要 输入 10.60.44.127 : 8000, 现在由于要用工具截获 服务端和客户端的 数据包 接受和发送

需要指定一个代理监听端口, 所以 这里输入  10.60.44.127:8080

 

如有其它问题,则请通过【telnet ip 端口号】看服务端是否开启此端口。

posted on 2011-01-27 21:39  chenlulouis  阅读(5081)  评论(1编辑  收藏  举报