java中serversocket是什么_java – Socket和ServerSocket有什么区别?

(我发布这个答案,因为我一直认为使逻辑正确很重要。)

我建议你看看下面的例子。

诚然,在进行TCP / IP通信时,所有必要的信息都可以由Socket类提供,仅用于通信。无论是在服务器端还是在客户端。

从上述链接可以看出,服务器端使用以下代码来获取自己的Socket实例。也就是说,在另一个端口上创建另一个套接字。

然后,服务器使用这个Socket实例来与客户端通信。

为了使图片完整,下面的代码片段显示客户端的Socket实例。

所以如果Socket可以这样做,为什么还需要ServerSocket?

这是因为通过TCP / IP协议进行通信的工作模式。

当2个程序通过TCP / IP通话时,通常会在< IP:端口>上被动地监听/等待另一个将主动连接到它。

所以你可以看到,在通信的这个开始阶段,双方都有非常不同的行为。所以使用两个不同的类来反映这种差异。

> Socket类封装了活动端的行为。 (a.k.a.客户)

> ServerSocket类封装被动方的行为(a.k.a.服务器)

一旦ServerSocket完成其侦听任务并检测到传入连接,它将接受()并创建一个新的Socket实例以方便通信。

同样,在java.nio包中,您将会找到ServerSocketChannel和SocketChannel类。而且他们的行为还是这样的:

ServerSocketChannel -------------> SocketChannel

accept()

所以,在某种程度上,我同意@JohnK他在评论中指出,或多或少只是一个6个字母的区别。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值