老师,我想问一下,客户端的connect()方法会跟服务端建立连接,前提是服务端已经bind并且开启了sccept;那么客户端的bind()有什么作用呢

来源:4-6 案例实操-TCP传输初始化配置-2

好多个胖子

2019-06-19

Socket socket = new Socket();
socket.setReuseAddress(true);
//这一步有什么作用呢
socket.bind(new InetSocketAddress(“127.0.0.1”,5000));
//与服务器建立连接
socket.connect(new InetSocketAddress(“127.0.0.1”, 9999));

写回答

1回答

Qiujuer

2019-06-19

关于为什么回答问题不及时的原因:http://www.imooc.com/article/288131

当我们链接到服务器的时候,客户端会随机分配一个可用的端口的;我们说过几个基本要素可以组合一个Socket链接:

服务器地址、服务器端口、客户端地址、客户端端口。

如果我们在链接服务器之前先在客户端调用了bind,那么客户端和服务器的链接端口就是固定的了。


一般来说

服务器的地址是:xxx.xxx.xxx.xxx:2000 
客户端的地址是:xxx.xxx.xxx.xxx:52321


52321 是一个随机的,每次都可能不同;但是我们可以通过bind,比如绑定到客户端3000上,然后链接:

服务器xxx.xxx.xxx.xxx:2000 ---- 客户端xxx.xxx.xxx.xxx:3000

这样每次链接客户端的地址都不变了。

2
1
好多个胖子
非常感谢!
2019-06-20
共1条回复

Socket网络编程进阶与实战 系统掌握Socket核心技术

理论+实践,系统且深入掌握Socket核心技术,从容应对各种Socket应用场景的不二之选

2316 学习 · 476 问题

查看课程