增强功能:
- 独立通信线程
- AES 256位数据加密传输
下载地址:
演示程序界面:
演示程序源代码:
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;
}
}
}
}