当前位置: 首页 > news >正文

TCP通讯-客户端链接

一、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

相关文章:

  • python 快速实现链接转 word 文档
  • 蓝桥杯题目(生日蜡烛)
  • ARM中断流程思考。
  • 【核心算法篇五】《DeepSeek时间序列预测:Transformer+ARIMA融合》
  • 文件分片上传 python
  • 2024亚马逊数据分析!
  • 【AI】mac 本地部署 Dify 实现智能体
  • Python HTTP 请求工具类 HttpUtils:简化 HTTP 请求的高效工具
  • 反向代理模块kd
  • 力扣第4题 寻找两个正序数组的中位数
  • 排序与算法:归并排序
  • V8 如何进行内存监控和调试
  • 基于SpringBoot的儿童性教育网站(源码+数据库)
  • startai产品精修教程
  • Webpack,Vite打包的理解
  • 主机的基本构成
  • Linux(Ubuntu24.04)源码编译安装OpenCV4.6.0
  • redis的应用,缓存,分布式锁
  • C语言——深入理解指针(2)(数组与指针)
  • 第三天面试题
  • 怎么做福彩网站/最新国内新闻10条
  • 公司首页模板/网站如何seo推广
  • 做网站需要写配置文件吗/百度搜索推广流程
  • 电商网站开发哪家好/郑州seo网站排名
  • 云桥在线客服/吉安seo网站快速排名
  • 金融审核网站制作/网店推广营销方案