VC下MFC网络编程Socket中,我用send连续发了三个包,为何接收的时候只能收到一个呢?

2025-02-27 02:33:41
推荐回答(3个)
回答1:

你检查一下接收端的代码,看是同步方式还是异步方式
一个是socket接受数据的函数是什么方式
另外一个就是你的处理,如果你的代码是收到包以后直接进行处理,处理完成才重新把端口ready接受数据,那么你整个过程就是同步的,这样的话期间的数据可能会被丢弃

建议在代码里加入队列或者缓冲区,把接收到的数据首先丢入缓冲区,然后读者去缓冲区里取数据进行处理。这样做也方便你定位问题所在

回答2:

因为“/* AfxMessageBox("hello body");*/注释掉 就可以收到3次”,原因应该有可能是这句话中断了程序的发送,导致前一句后一句发送异常,当然也可能是这句话,引起程序其他部分的异常。这句话,应该是测试用的吧,去掉就行了呀,不影响程序执行...

回答3:

问题太抽象,帖点关键代码看看