祁宏涛
祁宏涛

我这边维护了100个客户端,每5s同时分别给100个服务端发送心跳数据,长度是24,用wireshark抓包看到客户端有时候发出了48长度的数据
> > 我这边维护了100个客户端,每5s同时分别给100个服务端发送心跳数据,长度是24,用wireshark抓包看到客户端有时候发出了48长度的数据 > > 嗯,这极有可能是内核把我们两次send的数据合并到一个TCP报文段里了。 但是我们两次发送数据的时间间隔是5s钟,且设置了nodelay,还是粘到一起了 我会每隔5s用100个客户端给100个服务器发心跳数据,客户端和服务端是1对1
@IronsDu 求大神回复,感谢
 我拉取了最新的1.0.9的代码,centos下clang(3.4.2)编译不通过
> 你centos是哪个版本? centos 7.6,我还没有在Windows下测试 windows msvc编译时ok的
> 你调用`setDataCallback` 的参数是啥?  上面是旧的写法,下面是新的写法
> @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不可写