您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> Tcp多线程发送的问题

Tcp多线程发送的问题

来源:网络整理     时间:2016/8/27 7:44:31     关键词:

关于网友提出的“ Tcp多线程发送的问题”问题疑问,本网通过在网上对“ Tcp多线程发送的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: Tcp多线程发送的问题
描述:

Tcp 多线程多线程tcp线程

在一个TCP连接中,多个线程同时往一个socket发送数据,请问一次send能否被中断?
或者通俗的说send函数能否保证该次要发送的数据全部发送完毕才发送其它线程的数据?
望高手解惑。
解决方案1:

socket上的IO毕竟是串行的,还是同一时刻只在一个线程中发送数据比较好,且不说send()是否是线程安全的,如果多个线程同时在发送数据,这些数据会混在一起,接收端该如何区分这些数据。

解决方案2:

不能保证
there are two solutions:
1) lock it.
2) u define a special character to present the end of messages. You get what u gonna send and put it into a list, if specialCharacter.isfound ,then send(msg)

解决方案3:

最好只用一个线程来发送同一个socket,没有文档保证send函数是原子操作。
http://stackoverflow.com/questions/7942595/linux-c-c-socket-send-in-multi-thread-code

解决方案4:

send成功,返回值是实际发送的字节数。send不保证你buffer里有多少,一次调用都给你发过去。
所以不管send是否为多线程安全,多线程send数据,你就该当会乱掉来思考


以上介绍了“ Tcp多线程发送的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3628189.html

相关图片

相关文章