socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅
时间:2022-05-03
本文章向大家介绍socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样转化
直接上程序
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//定义委托
public delegate void ShowMessageHandel(string msg);
//向控件添加显示信息
public void showMsg(string msg)
{
listBox1.Items.Add(msg);
}
private void Form1_Load(object sender, EventArgs e)
{
//Control.CheckForIllegalCrossThreadCalls = false;
Thread th = new Thread(new ThreadStart(ServerSocket));
th.Start();
// ServerSocket();
}
Socket client;
public void ServerSocket()
{
IPEndPoint ipP = new IPEndPoint(IPAddress.Parse("192.168.1.104"), 6000);
Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socketServer.Bind(ipP);
while (true)
{
socketServer.Listen(5);
client = socketServer.Accept();
Thread thClient = new Thread(new ThreadStart(ClientSocket));
thClient.Start();
}
}
public void ClientSocket()
{
ShowMessageHandel smh = showMsg;
byte[] byteMsg = new byte[1024];
while (true)
{
client.Receive(byteMsg, byteMsg.Length, SocketFlags.None);
client.Send(System.Text.ASCIIEncoding.UTF8.GetBytes("你好"));
client.Send(UTF8Encoding.GetEncoding("GB2312").GetBytes("你好"));
// listBox1.Items.Add(Encoding .ASCII.GetString(byteMsg));
//可收发汉字
string strMsg = UTF8Encoding.GetEncoding("GB2312").GetString(byteMsg);
this.BeginInvoke(smh, strMsg);//委托简单调用
}
}
}
上面代码仅供参考,有肯多不足,请多指教
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(2)
- objective-C中的扩展方法与partial class
- 仿优酷Android客户端图片左右滑动(自动滑动)
- objective-C: NSString应该用initWithFormat? 还是 stringWithFormat?
- objective-C 的内存管理之-实例分析
- Tim Berners-Lee:网络的自由和开放
- android防止内存溢出浅析
- objective-C 的内存管理之-自动释放池(autorelease pool)
- objective-C 的内存管理之-引用计数
- CompoundButton.OnCheckedChangeListener与RadioGroup.OnCheckedChangeListener冲突
- Liora Rosin & Golan Levi:在北京驾车看洛杉矶的落日
- iphone/ipad/itouch进入DFU模式最简单的操作办法
- 微信小程序for循环里条件判断
- objective-C 的OOP(下)-类(static)方法、实例方法、overwrite(覆写)、属性(property)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- GO 的方法集
- 轻松应对并发问题,简易的火车票售票系统,第一步 —业务分析
- 【Spark Operator】核数设置Cores/Cores Limit/Cores Request,你搞清楚没有?
- 【Ceph RGW】radosgw_usage_exporter监控用户使用量
- 【Goland】#{key}=#{value},字符串被格式化了?
- Variable变量
- 案例:OGG目标端进程ABENDED处理
- Elasticsearch深分页以及排序查询问题
- 聊聊dubbo-go的HystrixFilter
- 如何将Java工程导出成可以执行的jar
- 利用JSP内置的Application对象实现的网站引用计数
- JSP导入XML不成功的一个原因
- 生产环境日志清理脚本
- fastadmin插件开发之插件目录
- EasySwoole之定时任务面板