110,534
社区成员
发帖
与我相关
我的任务
分享
public void SendFile(string strFilePath)
{
// 读取要发送的文件
byte[] arrFile = System.IO.File.ReadAllBytes(strFilePath);
byte[] arrNew = MakeNew("file", arrFile);
// 向客户端 发送文件
sokMsg.Send(arrNew);
}
public void GetFile (byte[] arrContent,int realLenth)
{
SaveFileDialog sfd = new SaveFileDialog(); //这是一个特殊的控件,需要主线程调用才能显示出来,所以进行线程同步
//thrMsg.SetApartmentState(ApartmentState.STA); 在这个控件的调用线程之后跟着说明
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string savePath = sfd.FileName;
using (System .IO .FileStream fs=new System.IO.FileStream (savePath , System.IO.FileMode .OpenOrCreate ))
{ //使用文件流 将收到的文件数据数组从下标为1的数据开始写入,一共写真实数据长度
fs.Write(arrContent ,1,realLenth );
}
ShowMsg("保存文件到【"+savePath +"】成功");
}
}
static void Main(string[] args)
{
// 1. 创建socket
Socket sListen = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 2. 填写IP
IPAddress IP = IPAddress.Parse("192.168.0.41");
IPEndPoint IPE = new IPEndPoint(IP, 4321);
// 3. 绑定
sListen.Bind(IPE);
// 4. 监控
Console.WriteLine("服务监听 ...");
sListen.Listen(2);
// 5. 循环接受客户端连接请求
while (true)
{
Socket clientSocket;
try
{
clientSocket = sListen.Accept();
}
catch
{
throw;
}
//向客户端发送数据
//ClientSocket。发送(encoding.unicode.getbytes(“我是一个服务器,你有吗??!!!!”;
//发送文件
byte[] buffer = ReadImageFile("timg.jpg");
clientSocket.Send(buffer, buffer.Length, SocketFlags.None);
Console.WriteLine("发送成功!");
}
}
private static byte[] ReadImageFile(String img)
{
FileInfo fileinfo = new FileInfo(img);
byte[] buf = new byte[fileinfo.Length];
FileStream fs = new FileStream(img, FileMode.Open, FileAccess.Read);
fs.Read(buf, 0, buf.Length);
fs.Close();
//fileInfo.Delete ();
GC.ReRegisterForFinalize(fileinfo);
GC.ReRegisterForFinalize(fs);
return buf;
}
客户端:自己写的窗体 加载了一个picturebox
private void Form1_Load(object sender, EventArgs e)
{
// 1. 创建socket
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 2. 填写远程IP
IPAddress IP = IPAddress.Parse("192.168.0.168");
IPEndPoint IPE = new IPEndPoint(IP, 4321);
Console.WriteLine("开始连接服务 ....");
// 3. 连接到服务器
s.Connect(IPE);
// 4.接收数据
byte[] buffer = new byte[1000000];
s.Receive(buffer, buffer.Length, SocketFlags.None);
Console.WriteLine("接收成功");
FileStream fs = File.Create("1.jpg");
fs.Write(buffer, 0, buffer.Length);
fs.Close();
//图片显示出来
MemoryStream ms = new MemoryStream(buffer);
Bitmap pictureBlob = new Bitmap(Bitmap.FromStream(ms));
this.pictureBox1.Image = pictureBlob;
Console.ReadKey();
}