多个线程写入同一个套接字问题

时间:2010-04-30 17:30:04

标签: c# tcpclient

我的程序使用套接字进行进程间通信。有一台服务器正在侦听localhost上的套接字端口(B),等待连接的TCP客户端列表。在服务器的另一端是另一个套接字(A),它将数据发送到互联网。服务器旨在将TCP客户端发送给他的所有内容转发到Internet上的服务器。我的问题是,如果两个TCP客户端碰巧同时发送数据,这对服务器的传出套接字(A)来说是个问题吗?

由于

2 个答案:

答案 0 :(得分:2)

如果多个线程将使用相同的套接字传输数据,MSDN docs建议您使用BeginSendEndSend

所以我建议您使用这些方法或将传出数据写入同步队列,然后单个线程从队列中挑选数据并通过套接字发送(A)

答案 1 :(得分:1)

您没有描述如何将多个客户端流的流量复用到单个传出流中。只是随意地将大量客户端流量放入流中并不能保证工作。在intertube另一端的接收端将不知道哪些字节属于什么对话。

我建议你首先关注另一端。什么机器在那里,它做什么,它需要知道什么在本地的多个客户端。