答:客户端不需要固定的端口号,所以没必要调用 bind()
注意:
- 客户端不是不允许调用 bind(),只是没必要绑定一个固定端口号,否则在同一台机器上启动多个客户端时就会出现端口号被占用,导致不能与服务端建立连接
- 不调用 bind() 绑定端口号的情况下,客户端的端口号在调用 connect() 时由 Linux 内核自动分配
- 不调用 bind() 绑定端口号的情况下,客户端的端口号在调用 connect() 时由 Linux 内核自动分配
- 服务端不是必须要调用 bind(),但如果不调用,Linux 内核会自动给服务进程分配监听端口号,如此,每次启动服务进程时端口号可能都会发生变化,导致客户端要连接服务端就会很麻烦