说明:集成TCP服务端、客户端、UDP发送端、UDP接收端网口通讯类
演示效果:
加载方式:
工程解决方案视图中,右键工程名称,添加现有存在项目,加载SocketEx.cs即可
使用方式:
- //添加命名空间引用
- using Com.Halcon51.Soft
复制代码
添加对象
- private SocketManager m_sockConn = null;
复制代码
然后在类的构造函数或者单独的初始化函数中初始化
- m_sockConn = new SocketManager(TcpMode==0? SocketManager.TcpType.SERVER: SocketManager.TcpType.CLIENT);
- m_sockConn.SetSocketParam(m_cfgManager.sysSetting.CommCfg.m_strTcpAddr, m_cfgManager.sysSetting.CommCfg.m_nTcpPort);
- m_sockConn.RegSocketEvent(new TcpEvent.MsgCallBack(SocketMsgCallback), new TcpEvent.StateCallBack(SocketStateCallback));
- m_sockConn.OpenSocketService();
复制代码
接收消息的事件为:
- private void SocketStateCallback(object sender, SocketStateEventArgs state)
- {
- string str = string.Empty;
- if (null != state.stateInfo)
- {
- str = Encoding.Default.GetString(state.stateInfo, 0, state.stateInfo.Length);
- }
- switch (state.state)
- {
- case SocketState.ONLINE:
- m_freshLogs?.Invoke("开启TCP通讯服务!");
- break;
- case SocketState.OFFLINE:
- m_freshLogs?.Invoke("关闭TCP通讯服务!");
- break;
- case SocketState.ERROR:
- m_freshLogs?.Invoke("TCP通讯服务异常:{0}", str);
- break;
- case SocketState.CONNECTED:
- m_freshLogs?.Invoke("对方:{0} 建立连接!", str);
- m_mainFrm.CheckTcpStatus(true, str);
- break;
- case SocketState.DISCONNECT:
- m_freshLogs?.Invoke("对方断开连接!");
- m_mainFrm.CheckTcpStatus(false, "");
- break;
- }
- }
- private void SocketMsgCallback(object sender, SocketMsgEventArgs msg)
- {
- m_freshLogs?.Invoke("收到对方Msg:{0}", Encoding.Default.GetString(msg.data));
- }
复制代码
说明:
m_freshLogs是用来显示日志的委托对象,自己定义就好了,这样就可以在界面上显示收到的数据!
- public delegate void FreshLogs(string str,params object[] arg);
- public FreshLogs m_freshLogs = null;
复制代码
照抄上面代码,根据TcpMode来初始化的,你需要定义TcpMode这个int类型的变量,0为服务端模式,1为客户端模式。
SOCKET调试助手v2.3:链接:http://pan.baidu.com/s/1bpeMZDl 密码:293d
开源下载链接:
链接:https://pan.baidu.com/s/1VKTD3Pd5bzymbqLRgjVz1A 密码:游客,本帖隐藏的内容需要积分高于 5 才可浏览,您当前积分为 0 |