(接上贴)c# 在 socket通信中,多客户端与一个服务器端异步通信时,传图片没有有关问题,但两台客户端同时要求传视频会卡死,怀疑是数据发送与接收的有关问题,求赐教
(接上贴)c# 在 socket通信中,多客户端与一个服务器端异步通信时,传图片没有问题,但两台客户端同时要求传视频会卡死,怀疑是数据发送与接收的问题,求赐教~
(接上一帖)
小弟新人,初来报道,求各位大神指导~~
最近在做一个课设,是有关C#中socket异步通信的,要求两台以上客户端向服务器端请求传送图片和视频信息,服务器端在接到请求后分别向每个客户端发送它们需要的信息,经调试,已解决连接问题,但在传输时却发现,两台客户端同时要求传视频时会出现客户端卡死的现象,而主机仍在传送,客户端得到的图片应该为顺序排列下来的,却在卡死的位置处的图片连同后面传来的图片接到了一个图片中,产生了一个很大的图片(一个上兆的图片,按理一张应为十几K)。故猜测:客户端接收数据出了问题,我们用的是MemoryStream来接受数据,但网上说socket通信中主要用NetworkStream来接受数据,故请教各位大牛,问题是不是出在这里??
附上server端发送数据代码:
客户端接受数据代码:
(接上一帖)
小弟新人,初来报道,求各位大神指导~~
最近在做一个课设,是有关C#中socket异步通信的,要求两台以上客户端向服务器端请求传送图片和视频信息,服务器端在接到请求后分别向每个客户端发送它们需要的信息,经调试,已解决连接问题,但在传输时却发现,两台客户端同时要求传视频时会出现客户端卡死的现象,而主机仍在传送,客户端得到的图片应该为顺序排列下来的,却在卡死的位置处的图片连同后面传来的图片接到了一个图片中,产生了一个很大的图片(一个上兆的图片,按理一张应为十几K)。故猜测:客户端接收数据出了问题,我们用的是MemoryStream来接受数据,但网上说socket通信中主要用NetworkStream来接受数据,故请教各位大牛,问题是不是出在这里??
附上server端发送数据代码:
public void SendFile(Socket s, string filename)
{
FileInfo fi = new FileInfo(filename);
byte[] len = BitConverter.GetBytes(fi.Length);
//首先把文件长度发送过去
s.BeginSendFile(filename,len,null,TransmitFileOptions.UseDefaultWorkerThread,new AsyncCallback(SendFileCallback),null);
}
public void SendFileCallback(IAsyncResult iar)
{
clientSocket.EndSendFile(iar);
lstServer.Items.Add(DateTime.Now + "The pic\"" + path + "\" has been SENT....");
}
客户端接受数据代码:
public void BeginReceive()//调用此函数 接收文件的开始工作
{
byte[] buffer = new byte[8];
//由于long占8位字节,所以先获取前8位字节数据
IAsyncResult iar = client.BeginReceive(
buffer,
0,
buffer.Length,
SocketFlags.None,
null,