祁宏涛

Results 33 comments of 祁宏涛

![image](https://user-images.githubusercontent.com/16768811/104865424-ec46ad80-5976-11eb-96ce-a39b86e5b883.png)

我这边维护了100个客户端,每5s同时分别给100个服务端发送心跳数据,长度是24,用wireshark抓包看到客户端有时候发出了48长度的数据

> > 我这边维护了100个客户端,每5s同时分别给100个服务端发送心跳数据,长度是24,用wireshark抓包看到客户端有时候发出了48长度的数据 > > 嗯,这极有可能是内核把我们两次send的数据合并到一个TCP报文段里了。 但是我们两次发送数据的时间间隔是5s钟,且设置了nodelay,还是粘到一起了 我会每隔5s用100个客户端给100个服务器发心跳数据,客户端和服务端是1对1

![image](https://user-images.githubusercontent.com/16768811/104920808-5856ff00-59d3-11eb-8337-8bd4993e235f.png) 我拉取了最新的1.0.9的代码,centos下clang(3.4.2)编译不通过

> 你centos是哪个版本? centos 7.6,我还没有在Windows下测试 windows msvc编译时ok的

> 你调用`setDataCallback` 的参数是啥? ![image](https://user-images.githubusercontent.com/16768811/104974499-33927400-5a33-11eb-9746-4fad02357216.png) 上面是旧的写法,下面是新的写法

> @qht1003077897 send发送成功的条件是:socket可写。 > 我估计这个时候你的网络不太好,socket已经不可写(但这并不代表socket断开)。 > > 作为对比,但你没有其他大量数据发送的时候,正常么? 我观察到的情况是socket持续了15s也还是不可写,因为我5s会发送一次,都没有发送成功,是不是和ftp占用了带宽有关呢,这个时候socket确实还没有断开,但是因为时间太长,服务端认为我已经没有了心跳,就把我断开了

> > @qht1003077897 send发送成功的条件是:socket可写。 > > 我估计这个时候你的网络不太好,socket已经不可写(但这并不代表socket断开)。 > > 作为对比,但你没有其他大量数据发送的时候,正常么? > > 我观察到的情况是socket持续了15s也还是不可写,因为我5s会发送一次,都没有发送成功,是不是和ftp占用了带宽有关呢,这个时候socket确实还没有断开,但是因为时间太长,服务端认为我已经没有了心跳,就把我断开了 没有这ftp上传的时候是正常的

> @qht1003077897 send发送成功的条件是:socket可写。 > 我估计这个时候你的网络不太好,socket已经不可写(但这并不代表socket断开)。 > > 作为对比,但你没有其他大量数据发送的时候,正常么? 因为对网络这块不太懂,因此我想知道下是否可能是ftp占用了带宽或者其他资源导致socket不可写的。(ftp上传向服务端的16602端口发送数据,tcp向服务端的16603端口发送数据) 我是100个客户端同时向100个服务端(ftp)发送300M的视频数据,在这个时候发送的tcp心跳就会导致socket不可写