socket为什么不能循环发送数据?

huihui1988 2009-12-11 09:05:43
private int FileSend()
{
int res = 0;
svr = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
svr.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
IPEndPoint seip = new IPEndPoint(IPAddress.Parse(Service.ConnIP), 12000);
svr.Connect(seip);
try
{
for (int i = 0; i < al.Count; i++)
{
if (svr.Connected)
{
string file = al[i].ToString();
string filename = Path.GetFileName(file);
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] fileread = new byte[0];
br.BaseStream.Seek(0, SeekOrigin.Begin);
fileread = br.ReadBytes((int)br.BaseStream.Length);
svr.Send(Service.FilePackage(12, Service.UserNumber, @"\Code", filename, fileread));
fs.Close();
br.Close();
}
}
//skt.Send(BitConverter.GetBytes(13));
res = 1;
}

catch { res = 0; }

return res;
}

这是一个我用来发送文件的函数。文件路径存在al[]这个数组中,可是我每次调试的时候,socket的send()函数只执行第一次,我在Server端只能收到第一个文件,后面的循环无任何反应。想知道到底是何原因导致的。求解......
...全文
405 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2009-12-16
  • 打赏
  • 举报
回复
循环里 发的太快
阻塞了
huihui1988 2009-12-16
  • 打赏
  • 举报
回复
既然没人回,那咱还是结贴吧......
huihui1988 2009-12-12
  • 打赏
  • 举报
回复
还是没答案么??
唉,从昨天纠结到现在了...
huihui1988 2009-12-12
  • 打赏
  • 举报
回复
diegod
大概是缓存来不及释放造成的吧

是客户端的缓存??上面的那个函数是用在客户端向服务器端发送文件的。如果我每次循环都新建一个socket,发完后关闭,服务器端是可以接收到所有的文件的。但是如果只用一个socket,循环中不断调用send()方法,服务器端只会收到第一个文件。客户端后面的循环无效。
plahushiyu 2009-12-12
  • 打赏
  • 举报
回复
客户端接收文件操作有没有放在一个循环体里头,一般来说都是开启一个单独执行接受信息的线程,里头放个死循环,用于不停地监听和接收。
diegod 2009-12-12
  • 打赏
  • 举报
回复
大概是缓存来不及释放造成的吧
huihui1988 2009-12-12
  • 打赏
  • 举报
回复
没有人知道吗???
huihui1988 2009-12-11
  • 打赏
  • 举报
回复
server端我开了一个TcpListener的线程,负责所有的侦听和接收工作,当然接收的时候还会再开辟新的线程。暂时客户端是每一次循环新建一个socket再关闭,太费资源了...socket这块刚入手,还有待好好学习.....
hero7086 2009-12-11
  • 打赏
  • 举报
回复
汗一个,你server端怎么写的呢,应该是socket.receive方法,并且收完一条要再调用(用委托事件) receive方法

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧