java tcp 与c tcpmessagelistener,使用TcpClient和Tcplistener同时发送和接收多个文件

我正在尝试构建一个Server \ Client程序,该程序允许我在笔记本电脑和家用计算机之间同时传输多个文件。

发送单个文件时,我的程序工作得很好;但是,当我尝试在单独的线程上同时发送多个文件时,它不起作用(我没有收到服务器上的任何文件)

这是我做的

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才能从服务器接收文件?

先谢谢你。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值