C#实战026:socket实现单文件传输
1、这里用到了Forms窗口程序来获取需要传送的文件,大家可以参考:C#实战025:控制台调用Forms窗口程序

4、在服务器端我们通过接收到的文件信息进行判断,是信息还是文件,是信息就提取文件名出来,方便后面创建文件时使用 if (reveiceName[0] == 0)//判断数组第一个值,如果为0则说明传的是信息 { fileName = Encoding.UTF8.GetString(result, 1, num - 1);//提取字节信息并转换成String Console.WriteLine("接收客户端的消息:{0}", fileName); }

6、byte[] arrFile = new byte[fs.Length]; //定义缓存控件,长度为文件长度 int length = fs.Read(arrFile, 0, arrFile.Length);//将文件读入缓存空间 byte[] SendarrFile = new byte[length + 1];//定义新的字节数组 SendarrFile[0] = 1;//将数组第一位设置为1,来表示发送的是文件数据 Buffer.BlockCopy(arrFile, 0, SendarrFile, 1, length);//偏移复制字节数组 socketClient.Send(SendarrFile);//将读取成功的文件发送给SocketServer服务器 Console.WriteLine("文件发送完毕!!!!");

8、if (reveiceName[0] == 1)//判断数组第一个值,如果为0则说明传的是文件 { SaveFileDialog save = new SaveFileDialog();//创建SaveFileDialog实例 string spath = @"C:\Users\admin\Desktop";//制定存储路径 string fullPath = Path.Combine(spath, fileName);//获取存储路径及文件名 FileStream filesave = new FileStream(fullPath, FileMode.Create, FileAccess.Write);//创建文件流,用来写入数据 filesave.Write(result, 1, num - 1);//将数据写入到文件中 filesave.Close(); Console.WriteLine("保存成功!!!"); }
