TCP通信的时候,发送大量数据会死机

您所在的位置:网站首页 udp怎么连续发送大量数据 TCP通信的时候,发送大量数据会死机

TCP通信的时候,发送大量数据会死机

2024-07-16 01:42| 来源: 网络整理| 查看: 265

我在MFC里面,用socket写了一个TCP通信的程序,异步套接字编程,注册了FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE事件。在客户端的主线程里面又创建了两个线程,一个线程不断的生成数据,另外一个线程把生成的数据发送出去,只要有数据生成就通过套接字发送。程序运行一段时间就会死机。发送线程调用send函数发送数据,send(pFrame->m_socket, pBuf,length, 0);我感觉数据生成的太多,在网络缓冲里面的数据还没有来得及发送的时候,又通过send函数往网络缓冲区中写数据了,最后内存耗尽,导致死机。请问用什么方法可以解决这个问题呢?在数据发送的时候如果知道网络发送缓冲区还有多大的空闲容量就可以确定是否要调用send函数了吧?如果网络发送缓冲区满了,就挂起发送数据的线程,如果网络发送缓冲区的空闲容量大于某个值了,就恢复发送数据的线程,这样可以吗?怎么才能知道网络发送缓冲区是否已经满了?如何知道网络发送缓冲区的空闲容量呢?

你不会是因为其它分配的内存资源没有及时释放导致的吧。。。 1、怎么才能知道网络发送缓冲区是否已经满了? 2、如何知道网络发送缓冲区的空闲容量呢?

如果我知道了前面的两个东西,再改一下程序就知道是不是你说的这个问题了

1。缓冲区慢了会send失败,再次空闲会调用FD_WRITE事件,可以根据这个进行推断是哪出了问题。 2。无法得知,这个是TCP算法决定的,你知道底层缓冲区多大࿱


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3