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端只能收到第一个文件,后面的循环无任何反应。想知道到底是何原因导致的。求解......
{
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端只能收到第一个文件,后面的循环无任何反应。想知道到底是何原因导致的。求解......
解决方案 »
- 在gridview 中有两个模板列,如何设置第一列的Button不获得焦点,而焦点只在第二列的textbox中移动?
- C# 64位win7下DllImport LoadLibrary函数失败,求解。
- 请教如何正确获得AMF3消息内容
- ===========求教高手===========
- 关于c#中使用IP连接本地和远程数据库的问题!!!!!!
- 如何判断richtext已输入的文本有几行?不想让richtext无限制的输入.
- 关于List 的线程安全(道者有分),不知小弟这样写是否可以。。。请大家多指教
- winform:对panel设定自动滚动条,但刷新后总是在原来位置,怎样使刷新后保持原来滚动的位置?
- 如何用C#实现SQL SERVER数据库的备份和数据恢复!
- datagridview的EditingControlShowin事件
- winform 记事本 关闭前保存问题(请教高手)
- 求一正则表达式,判断算术式!
大概是缓存来不及释放造成的吧是客户端的缓存??上面的那个函数是用在客户端向服务器端发送文件的。如果我每次循环都新建一个socket,发完后关闭,服务器端是可以接收到所有的文件的。但是如果只用一个socket,循环中不断调用send()方法,服务器端只会收到第一个文件。客户端后面的循环无效。