IronsDu
IronsDu
@qht1003077897 send发送成功的条件是:socket可写。 我估计这个时候你的网络不太好,socket已经不可写(但这并不代表socket断开)。 作为对比,但你没有其他大量数据发送的时候,正常么?
@qht1003077897 你能修复下么?或者使用新一点的clang或者gcc? 我现在手头上没有你那个版本的clang编译器。
你centos是哪个版本?
你调用`setDataCallback` 的参数是啥?
目前你尽量直接传递一个闭包函数给`setDataCallback `。
1. 抓包16603端口的TCP,看是否有重传 2. 把服务器的心跳检测设置长一点(比如大于的ftp发送的时间,以此来测试是否能够ftp结束后恢复)
> > 你调用`setDataCallback` 的参数是啥? > >  > 上面是旧的写法,下面是新的写法 我现在手机没翻墙,看不到图。你可以暂时做个修改:把那个verify函数去掉。
> @IronsDu 昨天因为现场环境的原因呢我们没有抓到包,但是想到一种可能,是不是可能是因为我这边阻塞了datacallback呢?所以我想问两个问题: > 1、在初始化阶段的createThread函数创建的线程的作用是什么?是同时监听用户发送缓冲区的数据吗? > 2、当我createThread创建1个线程的情况下,如果我阻塞了datacallback函数,是不是会导致send发送不成功? 如果在datacallback里阻塞了,那也就是说阻塞了所属io线程,那么归属于这个线程管理的socket都无法收发数据了。
初始化createThread的就是创建IO线程。
如果是阻塞,不妨用pstack等工具看看进程的堆栈。