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也会返回,返回为空字符串