如何在C++ socket tcp/ip中异步发送和接收数据和确认?,我可以在我的程序中看到当发送一些145字节的数据50次时,我将收到前六个确认,因为它需要时间给予承认。我尝试等待,直到收到当前发送的数据确认信息,但这需要很长时间,我不想这样做。我想处理数据。所以我认为我会把收到在一个单独的线程。我想在发送过程中同时处理接收?所以异步接收将工作?谁能帮忙?我用来接收和发送数据的类是一个静态类。因为我需要从另外两个类中调用才能将数据发送到相同的IP和端口。如何在C++ socket tcp/ip中异步发送和接收数据和确认?
1
A
回答
1
您可以使用套接字同时在一个线程中发送数据并在另一个线程中接收数据。你不能做的事情是从不同的线程在同一个套接字上执行相同的动作(发送或接收)。
尽管如此,总是尽量避免添加新的线程,如果不必要的话。您可以使用一些套接字函数(select,WSAEventSelect),它们会在您可以在套接字上执行读取/写入时通知您。把它们放入单个线程的循环中,等待事件并处理它们 - 在同一个线程中读/写。如果您需要处理收到的数据并且需要时间,请将接收到的数据存储在与另一个数据处理线程共享的队列中。当然,请记住,您需要使此队列线程安全并同步套接字和数据处理线程。
+1
或使用完成端口... – neagoegab
+0
+1进行评论。我同意,如果需要扩展性,完成端口是最好的(如果不是唯一的话)选择。 –
0
相关问题
- 1. 在Android中发送和接收Socket Java
- 2. 异步套接字C#发送数据但未收到
- 3. 如何发送和接收数据的TCP套接字(C/C++)
- 4. 发送和接收Java Socket错误
- 5. Raw Socket Linux发送/接收数据包
- 6. 如何同步发送和接收?
- 7. 发送和接收在UDP中的C
- 8. 以C#接收和发送数据
- 9. 发送和接收数据
- 10. 使用数据报UDP发送和接收确认
- 11. java socket编程问题(发送和接收数据)
- 12. 使用一个Socket来发送和接收数据
- 13. 发送和接收进度监控插座异步
- 14. Java Socket - 如何在3点之间发送和接收信息?
- 15. 如何发送和接收来自外部附件的数据异步
- 16. C++发送和接收套接字
- 17. 缓冲类和发送/接收数据
- 18. 异步发送和收听与amqp.node
- 19. 发送/接收怪异数据
- 20. 如何确保Socket发送数据?
- 21. 通过TCP接收和发送数据
- 22. 多个客户端异步连接,同步发送/接收
- 23. 发送和接收int C++
- 24. 确认在Xamarin表格中发送和接收SMS
- 25. 使用套接字发送和接收数据c
- 26. 的Python:异步发送/接收正常插座和HTTP连接
- 27. 套接字接收和发送数据端口C
- 28. 在php和perl之间发送和接收数据的问题?
- 29. 通过C#套接字正确发送和接收?
- 30. 如何在iphone中使用蓝牙发送和接收数据?
什么平台?更好地使用boost:asio ... – neagoegab
Windows平台。 – Ershad
除非它是一个旧协议,否则在使用'SOCK_STREAM'套接字时,您确实不需要确认,因为它已内置到底层TCP协议中。我不明白在不同的线程中接收/发送会是一个问题,但我从来没有尝试过,所以我很好奇它是如何发生的。但是如果你不想等待Ack,为什么不直接发送所有的数据,等待Ack?只需将接收缓冲区设置得足够大以适应所有情况。 –