服务器端代码
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
- using System.IO;
- namespace socketClient
- {
- public partial class Form1 : Form
- {
- Socket clientSocket;
- private static byte[] result = new byte[1024];
- public Form1()
- {
- InitializeComponent();
- }
- private void buttonBegin_Click(object sender, EventArgs e)
- {
- //设定服务器IP地址
- IPAddress ip = IPAddress.Parse("127.0.0.1");
- clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- try
- {
- clientSocket.Connect(new IPEndPoint(ip, 8000)); //配置服务器IP与端口
- }
- catch
- {
- MessageBox.Show("连接服务器失败");
- return;
- }
- }
- private void buttonClose_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- private void buttonSelect_Click(object sender, EventArgs e)
- {
- OpenFileDialog openFile = new OpenFileDialog();
- openFile.Filter = "图像文件(*.bmp;*.gif;*.jpg;*.jpeg;*.png)|*.bmp;*.gif;*.jpg;*.jpeg;*.png";
- openFile.Multiselect = false;
- if (openFile.ShowDialog() == DialogResult.OK)
- {
- textBox2.Text =openFile.FileName;
- }
- //string filename = openFile.FileName;
- //即返回带全路径的文件名
- //Path.GetFileNameWithoutExtension(filename)即可获得不带路径、后缀名的文件名。
- byte[] msg = Encoding.Default.GetBytes(Path.GetFileNameWithoutExtension(openFile.FileName));
- clientSocket.Send(msg);
- try
- {
- //开始使用socket发送文件
- FileStream fs = new FileStream(openFile.FileName, FileMode.OpenOrCreate, FileAccess.Read);
- byte[] fssize = new byte[fs.Length];
- BinaryReader strread = new BinaryReader(fs);
- strread.Read(fssize, 0, fssize.Length - 1);
- clientSocket.Send(fssize);
- fs.Close();
- clientSocket.Shutdown(System.Net.Sockets.SocketShutdown.Send);
- clientSocket.Close();
- }
- catch (Exception ex)
- {
- string s = ex.ToString();
- return;
- }
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Net.Sockets;
- using System.Net;
- using System.Threading;
- using System.IO;
- using System.Drawing.Imaging;
- namespace socketServer
- {
- public partial class Form1 : Form
- {
- private static byte[] result = new byte[1024];
- Socket serverSocket;
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- try
- {
- IPAddress ip = IPAddress.Parse("127.0.0.1");
- IPEndPoint iep = new IPEndPoint(ip, 8000);
- serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- serverSocket.Bind(iep);
- serverSocket.Listen(10);
- byte[] recvBytes = new byte[1024];
- int bytes = newSocket.Receive(recvBytes, recvBytes.Length, SocketFlags.None);//从客户端接受信息
- string name = Encoding.ASCII.GetString(recvBytes, 0, bytes);
- textBox1.Text = name+".jpg";
- //设置接收数据缓冲区的大小
- byte[] b = new byte[1024 * 4];
- MemoryStream fs = new MemoryStream();
- int got = 0;
- int datalength = 0;
- while (true)
- {
- got = newSocket.Receive(b);
- fs.Write(b, 0, got);
- if (got > 0)
- datalength = datalength + got;
- else
- break;
- }
- Bitmap Img = new Bitmap(fs);
- pictureBox1.Image = Img;
- string filename = name + ".jpg";
- Img.Save(@"D:images"+filename, ImageFormat.Jpeg);
- //关闭写文件流
- fs.Close();
- //关闭接收数据的Socket
- newSocket.Shutdown(System.Net.Sockets.SocketShutdown.Receive);
- newSocket.Close();
- }
- catch (Exception se)
- {
- serverSocket.Close();
- MessageBox.Show("连接错误" + se.ToString());
- return;
- }
- }
- }
- }
来源: http://www.phpxs.com/code/1004582/