需要用C#编写TCP协议的客户端接收两个服务器传过来的文件。使用了两个Socket连接两个服务器,每一个socket都有一个单独的接收线程recmsg,多线程+阻塞模式。
现在的问题是两个服务器有可能会在同一时刻向客户端发送文件,客户端同一IP地址下从不同端口同时接收到了文件。这种情况下是否会出现冲突的情况,客户端无法判断优先从哪个端口接收数据?
如果会有冲突,那么应该采用何种方式解决这种客户端同时接收到文件的情况?
部分代码如下
private void Form1_Load(object sender, EventArgs e)
{
socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse("192.168.2.100"), 7890);
socketClient.Connect(ipe);
threadClient = new Thread(RecMsg);
threadClient.IsBackground = true;
threadClient.Start();
Message.AppendText("已经与服务端100建立连接,可以开始通信...\r\n");
socketClient2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe2 = new IPEndPoint(IPAddress.Parse("192.168.2.110"), 7890);
socketClient2.Connect(ipe2);
threadClient2 = new Thread(RecMs);
threadClient2.IsBackground = true;
threadClient2.Start();
Message.AppendText("已经与服务端110建立连接,可以开始通信...\r\n");
}