C# 使用TcpClient和Tcplistner同时发送和接收多个文件
我正在尝试构建一个服务器\客户端程序,它允许我在笔记本电脑和家用电脑之间同时传输多个文件。 当发送单个文件时,我的程序工作正常;但是,当我尝试在不同的线程上同时发送多个文件时,它不起作用(我在服务器上没有收到任何文件) 这就是我所做的C# 使用TcpClient和Tcplistner同时发送和接收多个文件,c#,multithreading,tcpclient,tcplistener,C#,Multithreading,Tcpclient,Tcplistener,我正在尝试构建一个服务器\客户端程序,它允许我在笔记本电脑和家用电脑之间同时传输多个文件。 当发送单个文件时,我的程序工作正常;但是,当我尝试在不同的线程上同时发送多个文件时,它不起作用(我在服务器上没有收到任何文件) 这就是我所做的 foreach (string file in FilesCollection) { Thread Thr = new Thread(ParameterizedThreadStart(Send)); Thr.Start(file); } 这是发送
foreach (string file in FilesCollection)
{
Thread Thr = new Thread(ParameterizedThreadStart(Send));
Thr.Start(file);
}
这是发送部分
private void Send(string location)
{
TcpClient MyClient = null;
FileStream MyFileStream = null;
byte[] MyBuffer = null;
int dSize = 0;
try
{
MyClient = new TcpClient("127.0.0.1", 5555);
MyFileStream = new FileStream(location, FileMode.Open, FileAccess.Read);
MyBuffer = new byte[1024];
Console.WriteLine("Transfering Data...");
while (true)
{
try
{
dSize = MyFileStream.Read(MyBuffer, 0, MyBuffer.Length);
MyClient.GetStream().Write(MyBuffer, 0, dSize);
if (dSize == 0)
break;
}
catch (Exception er)
{
Console.WriteLine(er.Message);
}
}
MyFileStream.Close();
MyClient.Close();
MyBuffer = null;
Console.WriteLine("Transfer Complete");
}
catch (Exception er)
{
Console.WriteLine(er.Message);
}
}
这是接收部分
private void Receive(string location)
{
TcpClient MyClient = null;
FileStream MyFileStream = null;
byte[] MyBuffer = null;
int dSize = 0;
try
{
MyClient = MyListener.AcceptTcpClient();
Console.WriteLine("Connection Made");
MyFileStream = new FileStream(location, FileMode.Create, FileAccess.Write);
MyBuffer = new byte[4096];
while (true)
{
dSize = MyClient.GetStream().Read(MyBuffer, 0, MyBuffer.Length);
MyFileStream.Write(MyBuffer, 0, dSize);
if (dSize == 0)
break;
}
MyFileStream.Close();
MyClient.Close();
MyBuffer = null;
Console.WriteLine("Transfer Complete");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
有人能告诉我问题出在哪里吗?对于客户端,我是否必须启动tcplistner才能从服务器接收文件
提前感谢。请第1000000次定义“不工作”。stackoverflow已成为“这里没有任何信息,现在做我的工作”类型问题的落脚点。调试技能达到历史最低水平:((您在服务器端的何处创建serverclient线程?如果您在列表线程上处理文件,那么,是的,您一次只能处理一个连接。这是什么意思?