一、TCP客户端 效果展示

二、准备任务
1.创建画面

2. 创建服务端,与客户端进行相连接

三、控件的分体效果
1.窗体加载
private void Form1_Load(object sender, EventArgs e){System.Diagnostics.Process.Start(@"D:\17_SocketTool\SocketTool.exe");}
2.声明客户端和线程
public Socket clentsocket;
Thread t1;
3.ListBox 运行过程画面展示
private void AddMsg(string msg){listBox1.BeginInvoke(new Action<string>(str =>{listBox1.Items.Add(str);}), msg);}
4.链接服务器按钮功能
private void btnstart_Click(object sender, EventArgs e){btnstart.Enabled = false;btncancel.Enabled = true;clentsocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);IPAddress iPAddress = IPAddress.Parse(textBox1.Text);int port=int.Parse(textBox2.Text);IPEndPoint iPEndPoint=new IPEndPoint(iPAddress, port);try{clentsocket.Connect(iPEndPoint);AddMsg($"{DateTime.Now.ToString("HH-mm-sss")}链接成功");}catch (Exception ex){AddMsg(ex.ToString() );}//接收消息t1 = new Thread(Received);t1.IsBackground = true;t1.Start(clentsocket);}private void Received(object o){Socket socket=o as Socket;while(true){byte[]buffer=new byte[1024*1024*2];int r=socket.Receive(buffer);if(r==0){return;}string msg=Encoding.UTF8.GetString(buffer);AddMsg(msg);}}
5.断开服务器按钮功能
private void btncancel_Click(object sender, EventArgs e)
{btnstart.Enabled = true;btncancel.Enabled = false;if(clentsocket!=null){clentsocket.Shutdown(SocketShutdown.Both );clentsocket.Close();t1.Abort();}
}
6.发送信息功能实现
private void btnsend_Click(object sender, EventArgs e){string msg=textBox3.Text;byte[]bytes=Encoding.UTF8.GetBytes(msg);try{clentsocket.Send(bytes);AddMsg("发送成功");textBox3.Clear();}catch (Exception ex){throw;}}
全部代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Tcp客户端
{public partial class Form1 : Form{public Form1(){InitializeComponent();}public Socket clentsocket;Thread t1;private void btnstart_Click(object sender, EventArgs e){btnstart.Enabled = false;btncancel.Enabled = true;clentsocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);IPAddress iPAddress = IPAddress.Parse(textBox1.Text);int port=int.Parse(textBox2.Text);IPEndPoint iPEndPoint=new IPEndPoint(iPAddress, port);try{clentsocket.Connect(iPEndPoint);AddMsg($"{DateTime.Now.ToString("HH-mm-sss")}链接成功");}catch (Exception ex){AddMsg(ex.ToString() );}//接收消息t1 = new Thread(Received);t1.IsBackground = true;t1.Start(clentsocket);}private void Received(object o){Socket socket=o as Socket;while(true){byte[]buffer=new byte[1024*1024*2];int r=socket.Receive(buffer);if(r==0){return;}string msg=Encoding.UTF8.GetString(buffer);AddMsg(msg);}}private void btncancel_Click(object sender, EventArgs e){btnstart.Enabled = true;btncancel.Enabled = false;if(clentsocket!=null){clentsocket.Shutdown(SocketShutdown.Both );clentsocket.Close();t1.Abort();}}private void btnsend_Click(object sender, EventArgs e){string msg=textBox3.Text;byte[]bytes=Encoding.UTF8.GetBytes(msg);try{clentsocket.Send(bytes);AddMsg("发送成功");textBox3.Clear();}catch (Exception ex){throw;}}private void Form1_Load(object sender, EventArgs e){System.Diagnostics.Process.Start(@"D:\17_SocketTool\SocketTool.exe");}private void AddMsg(string msg){listBox1.BeginInvoke(new Action<string>(str =>{listBox1.Items.Add(str);}), msg);}private void Form1_FormClosing(object sender, FormClosingEventArgs e){if (clentsocket != null){clentsocket.Shutdown(SocketShutdown.Both);clentsocket.Close();t1.Abort();}}}
}
四、服务端和客户端的区别
在这里我可能给大家讲的不是很全面,你们则其善者而从之就可以了。
- 服务端就相当于一个大型网络设备, 电脑需要去联网, 同样网络只有被链接了才能被体会他的重要性。
- 服务端和客户端是相互的,要想他们两个构成链接,肯定需要网口ip和端口数据
- 就像你跟你朋友打电话一样,辅助的工具就是手机
客户端只有和服务端链接之后,他们的对话才算有效。
注意: 服务端的链接是 Bind, 客户端是 Connect
文章转载自: