Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 套接字写入中的多线程是否危险?_C#_Sockets_Networking_Tcpclient - Fatal编程技术网

C# 套接字写入中的多线程是否危险?

C# 套接字写入中的多线程是否危险?,c#,sockets,networking,tcpclient,C#,Sockets,Networking,Tcpclient,我正在创建一个基于Tcp的网络协议,并通过C#使用berkeley socket。 当两个线程试图一次通过socket.send方法发送数据时,套接字缓冲区是否会混淆? 一次访问一个线程是否应该使用锁?根据,套接字类是线程安全的。因此,这意味着您不需要锁定send方法,您可以在不同的线程上安全地发送和接收。但是请注意,顺序是不能保证的,因此如果您在一次调用中将数据全部发送到send方法而不是chuncked调用,则不会混合数据 除此之外,我建议锁定并刷新它,以防您不希望服务器在多个并发请求之间交

我正在创建一个基于Tcp的网络协议,并通过C#使用berkeley socket
当两个线程试图一次通过socket.send方法发送数据时,套接字缓冲区是否会混淆?
一次访问一个线程是否应该使用锁?

根据,套接字类是线程安全的。因此,这意味着您不需要锁定
send
方法,您可以在不同的线程上安全地发送和接收。但是请注意,顺序是不能保证的,因此如果您在一次调用中将数据全部发送到
send
方法而不是chuncked调用,则不会混合数据


除此之外,我建议锁定并刷新它,以防您不希望服务器在多个并发请求之间交换响应。但情况似乎并非如此。

这个套接字是从服务器到客户端的单向数据流吗?这个协议是基于请求和响应的吗?嗯,我的协议是基于这个规则的。[开始][邮件大小][邮件本身][结束]。是的,它是一个客户端服务器。但这是怎么回事?我看不出此解决方案的客户端-服务器、服务器到服务器或客户端到客户端之间有任何不同。不需要请求-响应。它只是发送数据。这是一个在线游戏。非常感谢,有时我忘了自己阅读参考资料。对于锁定,是的,我必须锁定。按顺序发送消息的原因。