[Java6]socket端口实验:socket

实验目的

观察Java socket的实际端口交互。

实验截图

用netstat来不断监听端口10001

没有任何端口事件时的初始状态。


客户端主动发起连接

端口被设置为SYN_SENT的同步位。等待服务器发送同步信息过来。


server端主动发起连接请求,等待client与之连接,这是无限期等待的。

端口被置为LISTENING(正在监听)。当client回应请求后,连接便建立起来。

有一个细节,不知道为什么他先建立起监听的居然是ipv6的监听。

为什么不是ipv4呢?不明白。


socket建立起了连接。

监听的端口开始转向ESTABLISHED(已建立)状态。

socket双方可以通信了。


当client主动放弃连接时,所有监听取消。

Java socket封装下,在关闭时,直接双方先后互发关闭请求应答包,直接结束。

端口恢复。


当server主动放弃连接时

同样地,端口恢复正常。


尝试用socket作server,telnet作client



同样,client主动发起的请求都会很快夭折



开了两个telnet连接socket server

建立成功。

细节:server只有一个,端口是10001

client有两个,端口是52690和52693

//-本来是有52690和52693的图的,但是上传的时候总上传不了,这张是先前的实验的,设备、环境都一样。

//-先看着吧-,-


关了一个telnet

server端口被置为CLOSE_WAIT(结束的时候的,三次握手啊)

client端口被置为FIN_WAIT_2(直接是2了,这速度。。。)


另一个也关了


握手等待时间过去后,第一个关闭的telnet端口恢复正常。



直接把 server端关了

所有应用到的端口重新置位。

完事。


 

 查看端口的脚本

for /L %%1 in (1,1,9999) do (

  netstat -a |find"10001"

)

或者直接用以下shell:

for /L %i in (1,1,999) do netstat-a|find "10001"

 

总结:

1.      JAVA在处理的socket机制是基于本地系统实现的,所以没什么特别的,只是证明了一下,他的确这样做的。

2.      对了server 和client分别发起连接请求时候,端口情况的观察表明,c/s模式下,服务器才是老大。server端口持续监听,而client端则敏捷取消。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值