C#winform TCP UDP通信

这篇博客提供C# TCP/UDP基础通信代码,适用于初学者。包括TCP Server和TCP Client的连接,以及字符串和HEX数据的收发功能。提供了完整的工程源码下载,适用于开发环境进行调试。同时展示了软件截图和主界面代码,帮助理解实现过程。
摘要由CSDN通过智能技术生成

C# TCP/UDP网络调试基础通信代码,适合小白初学参考

源码下载链接

本示例源码下载地址(完整工程代码,可直接编译运行)

开发环境

	win7
	vs2017(社区版)

主要功能

实现TCPServer TCPClient UDP的连接通信,字符串和HEX数据收发功能测试

软件截图

在这里插入图片描述
在这里插入图片描述

主界面代码

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;

namespace UDPTest
{
   
    public partial class MainForm : Form
    {
   

        delegate void RtbData(string str, Color color);       //显示日志信息
        RtbData RtbDataUpdate;           //显示日志信息

        TCPSocket _testTcpSocket = new TCPSocket();          //网络数据

        public MainForm()
        {
   
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
   
            cmb_SocketType.SelectedIndex = 0;
            RtbDataUpdate = new RtbData(RtbDataInit);                   //初始化更新数据委托
            _testTcpSocket.BufferReceChange += OnTestBufferReceChange;  //网络接受数据事件
            _testTcpSocket.ConnStateChange += OnTeseTcpStateChange;     //网络状态变化事件
        }

        //打开或关闭网络
        private void btn_OpenOrClose_Click(object sender, EventArgs e)
        {
   
            SetTestTcpSocket();
            if (!_testTcpSocket._connState)
            {
   
                _testTcpSocket.tcpOpen();
            }
            else
            {
   
                _testTcpSocket.tcpClose();
            }
        }

        //发送数据
        private void btn_Send_Click(object sender, EventArgs e)
        {
   
            if (cb_SendHex.Checked)
            {
   
                _testTcpSocket.SendData(Utils.hexStringToByte(txb_SendData.Text));  //按十六进制发送
            }
            else
            {
   
                _testTcpSocket.SendData(System.Text.Encoding.Default.GetBytes(txb_SendData.Text));  //普通文本数据发送
            }
        }
        //验证发送框数据是否为HEX
        private void txb_SendData_KeyPress(object sender, KeyPressEventArgs e)
        {
   
            if (cb_SendHex.Checked)      //16进制发送 则进行判断
            {
   
                char inputChar = e.KeyChar;

                // 0-9 ,a-f ,A-F 正常   3-选中 8-退格  13是回车 
                if ((inputChar >= 48 && inputChar <= 57)
                    || (inputChar >= 65 && inputChar <= 70)
                    || (inputChar >= 97 && inputChar <= 102)
                    || (inputChar == ' ')
                    || (inputChar == 8)
                    || (inputChar == 3)
                    || (inputChar == 13))
                {
   

                }
                else
                {
   
                    //MessageBox.Show(MessageClass.MESSAGE_HEX_ERROR, MessageClass.MESSAGE_LIFT);
                    MessageBox.Show("非Hex数据");
                    e.KeyChar = '\0';
                }
            }
        }
        //定时发送
        private void cb_NetTime_CheckedChanged(object sender, EventArgs e)
        {
   
            if (!_testTcpSocket._connState || txb_SendData.Text.Trim().Length == 0)
            {
   
                cb_NetTime.Checked = false;
                return;
            }
            if (cb_NetTime.Checked)
            {
   
                _testTcpSocket.tCPCaclyTimer.Interval = Convert.ToInt32(nud_TcpTime.Value);
                _testTcpSocket.tCPCaclyTimer.AutoReset = true;
                if (cb_SendHex.Checked)
                {
   
                    _testTcpSocket._caclyBuffer 
  • 9
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值