C#:一个增强的TcpClient(*)客户端演示程序及源代码下载

增强功能:

独立通信线程AES 256位数据加密传输

下载地址:

TcpClientPlus.zip

演示程序界面:

演示程序源代码:

using System;using System.Net.Sockets;using System.Windows.Forms;using Splash.Net.Sockets;using Splash.Windows.Forms;namespace RunClient{public partial class Form1 : Form{/// <summary>/// TCP连接客户端/// </summary>private TcpClientPlus tcpClient;public Form1(){InitializeComponent();}// 建立连接private void button_Connect_Click(object sender, EventArgs e){if (tcpClient == null){try{ // 建立Tcp连接tcpClient = new TcpClientPlus(textBox_IP.Text, Convert.ToInt32(textBox_Port.Text));button_Connect.Text = "断开连接";MessageBoxPlus.Show(this, "建立连接成功!", "信息");}catch{MessageBoxPlus.Show(this, "建立连接失败!", "信息");button_Send.Enabled = false; // 发送按钮失效}}else{tcpClient.Close();tcpClient = null;button_Connect.Text = "建立连接";MessageBoxPlus.Show(this, "断开连接成功!", "信息");}}// 派发任务private void button_Send_Click(object sender, EventArgs e){if (tcpClient == null || !tcpClient.Connected){MessageBoxPlus.Show(this, "连接已中断,请重新建立连接!", "信息");return;}// 发送按钮失效button_Send.Enabled = false;if (String.IsNullOrEmpty(textBox_Command.Text)) return;// 设置通信密钥tcpClient.SecretKey = textBox_SecretKey.Text;// 派发任务if (!tcpClient.ThreadTaskAllocation(HandleClientComm)){MessageBoxPlus.Show(this, "通信信道忙!", "信息");}}// 清空列表private void button_Clear_Click(object sender, EventArgs e){textBox_Notes.Clear();}private void textBox_Command_TextChanged(object sender, EventArgs e){if (tcpClient != null){if (!String.IsNullOrEmpty(textBox_Command.Text)){button_Send.Enabled = true;}}}// 窗体关闭private void Form1_FormClosing(object sender, FormClosingEventArgs e){if (tcpClient != null){tcpClient.Close();}}// 处理通信private void HandleClientComm(object sender, EventArgs e){TcpClientPlus client = sender as TcpClientPlus;if (client != null){try{String Command = GetCommand();String Answer;client.Query(Command, out Answer);SetNote(Command + "\r\n");SetNote(Answer + "\r\n\r\n");}catch (Exception ex){Type type = ex.GetType();if (type == typeof(SocketException) || type == typeof(System.IO.IOException)){ // 连接中断client.Close();MessageBoxPlus.Show(this, "连接中断!", "信息");}else{SetNote("操作失败异常原因:" + type.Name + "\r\n\r\n");}}}}// 对 Windows 窗体控件进行线程安全调用private void SetNote(String text){if (textBox_Notes.InvokeRequired){textBox_Notes.BeginInvoke(new Action<String>((msg) =>{textBox_Notes.AppendText(msg);}), text);}else{textBox_Notes.AppendText(text);}}// 对 Windows 窗体控件进行线程安全调用private String GetCommand(){if (textBox_Command.InvokeRequired){return (String)textBox_Command.Invoke(new Func<String>(() => { return textBox_Command.Text; }));}else{return textBox_Command.Text;}}}}

版权声明:本文为博主原创文章,,未经博主允许不得转载。

有理想在的地方,地狱就是天堂

C#:一个增强的TcpClient(*)客户端演示程序及源代码下载

相关文章:

你感兴趣的文章:

标签云: