客户端:
界面:
代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; namespace Test2.Client { public partial class Form1 : Form { Socket clientSocket; IPEndPoint ipEndPoint; public Form1() { InitializeComponent(); button1.Text = "连接"; button2.Text = "发送"; button3.Text = "关闭"; } private void button1_Click(object sender, EventArgs e) { clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ipEndPoint = new IPEndPoint(IPAddress.Parse("xxxxxxxxx"), 52555); clientSocket.Connect(ipEndPoint); } private void button2_Click(object sender, EventArgs eCiHoybeegLjsa) { clientSocket.Send(System.Text.Encoding.UTF8.GetBytes(textBox1.Text)); } private void button3_Click(object sender, EventArgs e) { SafeClose(clientSocket); } public void SafeClose( Socket socket) { if (socket == null) return; if (!socket.Connected) return; try { socket.Shutdown(SocketShutdownsEoqRziHLTgBkjWjs.Both); } catch { } try { socket.Close(); } catch { } } } }
服务器端:
界面:
代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; namespace Test2.Server { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.FormClosed += Form1_FormClosed; } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { SafeClose(socketSend); } public void SafeClose( Socket socket) { if (socket == null) return; if (!socket.Connected) return; try { socket.Shutdown(SocketShutdown.Both); } catch { } try { socket.Close(); } catch { } } Socket socketSend; private void button1_Click(object sender, EventArgs e) { try { //点击开始监听时 在服务端创建一个负责监听IP和端口号的Socket Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = IPAddress.Any; //创建对象端口 IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(52555)); socketWatch.Bind(point);//绑定端口号 MessageBox.Show("Watching"); socketWatch.Listen(10);//设置监听 //创建监听线程 Thread thread = new Thread(Listen); thread.IsBackground = true; thread.Start(socketWatch); } catch { } } void Listen(object o) { try { Socket socketWatch = o as Socket; while (true) { socketSend = socketWatch.Accept();//等待接收客户端连接 //ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功!"); //开启一个新线程,执行接收消息方法 Thread r_thread = new Thread(Received); r_thread.IsBackground = true; r_thread.Start(socketSend); } } catch { } } void Received(object o) { try { Socket socketSend = o as Socket; while (true) { //客户端连接服务器成功后,服务器接收客户端发送的消息 byte[] buffer = new byte[1024 * 1024 * 3]; //实际接收到的有效字节数 int len = socketSend.Receive(buffer); if (len == 0) { break; } string str = Encoding.UTF8.GetString(buffer, 0, len); this.Invoke(new Action(() => { listBox1.Items.Add(str + " "); })); } } catch { } } } }