socket和accept返回的套接字不同之处。

1、socket返回的套接字用于listen、bind或者connect,服务端调用listen、bind之后再用于生产accept_fd,客户端则connect后直接可以读写和服务端通讯。

2、accept调用socket产生的套接字并返回xi套接新的,用于和客户端通讯读写,若一台服务器的一个端口连接了三个客户端,则有一个sock_fd和三个accept_fd,共四个套接字描述符。

3、accept返回成功后,可以直接关闭socket产生的套接字sock_fd,不影响后面accept_fd的通讯。

4、客户端关闭连接后,服务器需要关闭所有套接字,包括socket_fd和accept_fd。

 

举例:一个客户端和一个服务端连接

双方socket产生各自的c_sock_fd和s_sock_fd;

s_sock_fd进行bind和listen后,accept准备接受客户端的连接请求;

c_sock_fd调用connect请求连接服务端;

服务端接到请求产生accept_fd,届时accept_fd和c_sock_fd两个套接字可以通讯,而s_sock_fd则可以关闭;

客户端关闭close(c_sock_fd)后,服务端关闭所有未关闭的fd,通讯彻底断开。

(服务端的socket产生的套接字只是用来监听的,不能直接用于发送接收数据。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值