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