C#TCP消息接收与发送
public delegate void ShowData(string msg); //实现跨线程消息显示功能
public delegate bool EnableButtonDelegate(Control control, ref bool enabled); //控制按钮启用/禁用设置
private const int bufferSize = 8000; //数据缓冲区大小设置为8千字节
private void EnableButton(Control control, bool enable)
{
if (control.IsRequiredToInvoke)
{
// 使用Task.Delay实现
control.IsEnabled = enable; // 使用Task.Delay实现
control.Invoke(new EnableButtonDelegate((ct, eb) => { ct.Enabled = eb; }), new object[] { control, enable });
}
else
{
// 将控制器的Enabled属性设置为指定值
control.Enabled = enable;
}
}
tcp客户端对象tcpClient已经创建完成
监听器server已经创建完成
ip地址和端口号记录已经生成
接收并监听客户端消息的过程已经启动
ip地址和端口号记录已经被成功解析
监听器server已经被成功配置为指定的ip地址和端口号
开始监听客户端连接
获取当前连接的客户端对象已经完成
连接已建立状态已经设置为true
循环监听客户端发来的消息过程已经被启动
循环中将接收到的数据逐行显示到日志中
如果遇到异常将会输出相应的错误信息并终止程序运行
整个过程将会持续执行直到系统正常关闭为止
私有 void btnStart_Click(object sender, EventArgs e)
{
通过 new Thread() 实例化一个新的接收器与监听器的线程;
创建一个名为 ipHePort 的新 IpAndPort 对象;
将 ipHePort 的 ip 字段设置为 "127.0.0.1";
将 ipHePort 的 port 字段设置为 "10001";
启动 ipHePort 对象;
}
///
/// 发送消息到指定地址和端口
///
///
///
private void btnSend_Click(object sender, EventArgs e)
{
如果(txtMsg.Text.Trim().Length == 0) // 如果输入为空字符串则返回
{
显示消息:"请在输入框中输入要发送的消息";
返回;
}
否则
{
尝试将数据从 txtMsg 文本框获取并编码为默认编码存储到缓存中;
将缓存中的数据写入网络流;
清空 txtMsg 文本框的内容;
如果发生异常,则显示错误提示信息并返回;
}
}
}
}
