问题记录

1.之前一直有个问题困扰:socket多线程通信中,调用某一线程执行read(非阻塞socket)读取数据时,如果数据在read执行之前或者read执行完之后发过来?岂不错过了数据?实际上,对每一个端口,已到达的数据会放在对应的缓存中(目前还不知道这个缓存具体是什么),read其实是从缓存中读取数据,那如果发送方太快,缓存被填满,新来的数据被丢弃从而无法接收到怎么办,其实这种情况不会发生,因为TCP具有流量控制(发送方发送的数据不能大于接收方缓冲区),其次TCP是面向字节流的可靠协议,对于没收到的字节发送方会再次发送


2.

1>> 多个socket可以复用一个端口,那么如何区分这个端口的某部分数据属于哪个socket?

2>> clientfd = accept(serverfd,......)  以前一直认为 接受客户端的TCP连接请求后返回的套接字(clientfd)和服务器监听套接字(serverfd)的端口不同,然而通过程序实验后发现 clientfd.port == serverfd.port  端口复用?


3.python socket通信中的select,当只监控第一个参数(等待读socket)时,若对方断开了连接,select也会返回,返回为空字符串



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值