2010-04-30 84 views
1

我的程序使用套接字进行进程间通信。有一台服务器在本地主机上的套接字端口(B)上侦听,等待TCP客户端列表进行连接。而服务器的另一端是另一个将数据发送到互联网的套接字(A)。该服务器旨在将TCP客户端发送给他的所有内容都转发给Internet上的服务器。我的问题是,如果两个TCP客户端碰巧同时发送数据,这是否会成为服务器的传出套接字(A)的问题?多个线程写入同一套接字问题

感谢

+0

这取决于。如果您将所有客户端数据随意混合到单个TCP连接中,结果将很难理解。 – dtb 2010-04-30 17:34:05

+0

我同意@dtb,如果你只有一个'Thread'来管理'Socket',你不必担心并发问题。 – ChaosPandion 2010-04-30 18:57:51

回答

2

MSDN docs建议您使用BeginSendEndSend如果多个线程将使用同一个插座传输数据。

所以我建议你要么使用这些方法或写入传出数据同步队列,从一个单独的线程会再挑数据从队列并发送它通过套接字(A)

1

你不没有描述如何将多个客户端流的流量复用到单个外出流上。只是随意地把大量的客户端流量加入流中是没有保证的。 intertube另一端的接收端将不知道什么字节属于什么会话。

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