C#应用视频教程1.4 实现完整以太网通讯

对于事件和委托机制不够理解的读者可以参考本节提供的委托相关的范例程序,这个是控制台的程序,比较简洁(书店发布一本书的事件注册到某个读者A身上,原理跟前面一小节讲的是一致的,只不过没有通过委托对外发送数据,所以实用性不是很广,后面还有两个范例也是对事件和委托的进一步深入)

?

事实上我任意一个控件双击事件进去也是这么个套路,比如整个程序的加载和关闭事件,我们只是在Form的事件上选几个鼠标双击进去,貌似直接定位到了方法(private void SocketTest_Load,而且直接为我们写好了过来的参数),实际上只要找到Designer.cs文件还是能找到委托和事件的代码(this就表示这个窗体,可以简单理解为窗体的加载/关闭事件发生的时候,去执行SocketTest_Load/SocketTest_FormClosing方法)

?

再来看我们自定义封装的类使用了事件和委托之后,也变得非常简洁,可读写很强(如果类是静态的,委托也要做成静态的)

?

在理解了事件和委托机制,且实现了客户端代码后,我们把服务器端的代码也实现,服务器比客户端稍微复杂一点,启动的时候他先会阻阻塞在Accept方法上(直到有客户端连接上来才会接着往下执行,所以BeginListen方法也要放到线程中执行,如果有客户端连接上来,则接着新建一个线程不断获取读取客户端发来的数据)

?

此外跟客户端不同的地方在于,服务器需要额外定义一个socket对象(client_socket,如果前面的Accept方法被成功执行,则client_socket就会得到客户端的IP地址等信息,后面的给这个客户端的收发也是通过这个Accept之后实例化的client_socket在进行,可想而知,如果是要做1个服务器对多个客户端的,每次客户端连接上就需要分配不同的client_socket对象过去,否则一个client_socket只会保存一个客户端的消息,这样子一对多,服务器发的消息只会跑到最新的连接上来的客户端那里)

?

当服务器主动点击断开的时候,还是需要发送一条空消息(仿照JAVA版的SocketTest),空消息并不是空字符串,你发空字符串可能还是有意义,回车换行之类的,可以直接发一个空的byte数组过去,这样我们前面写的客户端收到第一个byte是0的时候就知道要服务器点击断开了

?

最后是对界面整个的重新布局,前面我们用的都是文本框,最好还是用listbox,每次收到数据之后自动刷新显示最后一条(也是仿照他的做法,他每次发完之后就把文本框清空了,这个我认为没有必要)

?

服务器端要比客户端稍微功能多一点,刷新本机IP,设置本机IP都应该是服务器这边的功能(而PING一个网络地址应该既不属于client也不属于server,所以放在顶部比较合适)

?

最后添加一个LOGO,就可以像JAVA版的SocketTest发布了(添加一个自定义的ICO,可以在程序运行的时候左上角和图标都有显示)

?

总结:除了同步的方式实现Socket通信,还有异步的方式,而且除了TCP方式还有UDP方式(广播的方式,比如一个服务器对应多个客户端,服务器发一条消息不需要指定给哪个客户,就是所有客户都收到),此外基于Socket通信还产生了很多工业的通讯协议比如ModbusTCP,EtherNetIP(Socekt的TCP/IP通信就只是简单规定了收发字节流byte数组,后面在此基础上又对字节流做了很多规定,比如开头,结尾,数据段定义,错误校验等等,从而形成了更简洁,更不容易出错的字节流,比较规范的叫做数据帧),在这里都不做详细的分析,感兴趣的读者可以自己去想办法实现,最简单的同步socekt已经够用了。

1 实现完整的Socket通信的流程,理解客户端,服务器的通信流程

2 理解定义Socket的服务器和客户端的方法,不做成静态的好处(读者可以自己测试开放多个端口和连接多个客户端的要如何实现,如果做成静态的就没法实现了)

3 理解委托和事件在传递消息方面的优越性,在以后的代码中除了会把各种方法封装成类(尤其是基础教程讲了很多字符串方法,数学运算方法),还要会规范类的数据处理,最好的方式就是通过委托

?

?

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

?

我的在线论坛:

http://csrobot.gz01.bdysite.com/

?

问题交流:

QQ:910358960

邮箱:[email protected]

?

?

?

时间: 2024-10-14 06:37:49

C#应用视频教程1.4 实现完整以太网通讯的相关文章

STM32F412应用开发笔记之五:结合W5500实现以太网通讯

因实际使用需求我们测试一下网络通讯,在NUCLEO-F412ZG测试板上没有以太网部分,我们选择外接一个W5500的实验板.W5500支持SPI接口通讯,DC3.3V供源.而NUCLEO-F412ZG测试板已经将SPI1的各引脚SPI1_NSS(CN7_17).SPI1_SCK(CN7_10).SPI1_MISO(CN7_12).SPI1_MOSI(CN7_14)引出到CN7,3.3VDC和GND也引导了CN8,可以方便的实现测试.如下图红框所示: 1.测试的准备工作 为了实现以太网通讯首先需要

用以太网通讯读写条码扫描头

把通讯封装成一个类“ 该程序的特点有优势: 传统写法当条码扫描头停机.异常断电.网络异常等,通讯终端后,程序无法正常恢复连接,丢失数据引发故障,我写的程序,无论扫描头断电还是产线重启,都能第一时间重启连接并通讯上,稳定性很好. 这个也是在一个朋友老程序不断出问题后,找我帮忙,我给重新写的,试用后效果很不过,非常好用,再也没有发生过问题. 如果您有硬件的通讯访问难点和项目,可以联系我解决,譬如 RS232 485 422 串口通讯.以太网接口的仪器仪表通讯.OPC Server自动化数据PLC访问

C/C++编程语言学习资料尽收眼底 电子书+视频教程

Visual C++(VC/MFC)学习电子书及开发工具下载请看这里 史无前例的网络最全最强C/C++资料索引: C/C++编程语言学习资料尽收眼底 电子书+视频教程 VC++/MFC(VC6)开发技术精品学习资料下载汇总 Visual C++/MFC数字图像处理学习参考资料下载大全 C++ Builder开发技术相关精品资料下载汇总 C/C++开发工具/集成开发环境 下载汇总 VC/MFC开发必备Visual C++.Visual Studio.MSDN等下载汇总 注意:本帖包含C++和C语言

以太网和工业以太网

OSI参考模型中的数据链路层定义了通过通信媒介互联的设备之间传输的规范,数据链路的传输方式有以太网.WLAN(无线局域网如Wifi/蓝牙/3G/4G/WiMAx/ZigBee等).PPP(点对点).ATM.FDDI.光纤通道.HDMI等,而互联网可以简单理解为数据链路的集合,即以太网.WLAN(无线局域网).PPP(点对点).ATM.FDDI.光纤通道.HDMI的集合. 需要指出,一般以太网规范除了设计到数据链路层,还涉及到物理层,即物理接口形态.常见的以太网通讯电缆有同轴电缆.双绞线等,各种电

S7-200以太网通信

一.西门子网络系统 二.s7-200通过以太网模块接入以太网 三.S7-200可以接入的以太网系统 四.S7-200以太网通讯实验 五.实验硬件系统组成 六.S7-200作为服务器的配置 1.进入以太网配置向导 2.指定模块位置 3.选择与实际匹配的模块型号 4.配置IP地址和子网掩码 5.输出字节地址和连接此模块的数量 6.配置连接,勾选服务器 7.使用CRC保护 8.为配置分配存储区,不要和其他重叠 9.完成配置,生成子程序ETH0_CTRL 七.S7-200作为客户机的配置 总体配置和服务

各种工业以太网概述

工业以太网 工业以太网是基于IEEE 802.3 (Ethernet)的强大的区域和单元网络.利用工业以太网,SIMATIC NET 提供了一个无缝集成到新的多媒体世界的途径.企业内部互联网(Intranet),外部互联网(Extranet),以及国际互联网(Internet) 提供的广泛应用不但已经进入今天的办公室领域,而且还可以应用于生产和过程自动化.继10M波特率以太网成功运行之后,具有交换功能,全双工和自适应的100M波特率快速以太网(Fast Ethernet,符合IEEE 802.3

C#应用视频教程3.1 USB工业相机测试

图像处理是工控很有价值的一个领域,比如人脸识别,车牌识别,还有产品的位置识别,瑕疵检测,对于个人学习来说,我们无法直接上手几万块的成熟工业相机(高端的康耐视要6万左右,而且是黑白的,要测试一些带颜色的算法功能无法实现),先要用便宜的东西做一些简单的测试(原则上做教程不应该涉及硬件,因为如果读者无法按照你的硬件标准学习,那也只能走马观花看一遍,但是实际上要做工控必须要涉及硬件,可以先从简单的便宜的开始入手) ? 淘宝是比较靠谱的方案,我自己测试买的是下面这个品牌的(不是要给他们做广告,读者也可以自

S7以太网协议介绍

关于OPC的相关内容以后再说,我又给自己挖了个坑,,,,, 关于S7和Simulink的连接可以看我CSDN的Matlab的更新,,,,过几天就写,,, 想学C#的可以百度个教程,当然这个篇教程只是配置与介绍,,具体应用后面慢慢更. 具体介绍内容看以下这篇博客: http://gmiru.com/article/s7comm/ 西门子通信场景 西门子设备使用多种不同现场总线协议,例如:MPI.Profibus.IE .Profinet 等.Profinet用于将PLC连接到IO模块,而不是设备的

一.SuperIO通讯机制

1.1    应用场景 通讯平台的交互对象包括两方面:第一.与硬件产品交互.第二.与软件产品交互.基本这两方面考虑,通讯平台一般会应用在两个场景: 1)通讯平台应用在PC机上 主要应用在自动站的工控机上,通过RS485/RS232.RJ45.4-20mA等方式采集硬件设备的数据信息.同时,通讯平台与服务器端的软件进行交互,负责上传数据信息,以及接收控制命令等. 2)通讯平台应用在服务器端上 终端设备以3G/4G.有线专网.卫星等与通讯平台连接,进行数据交互,终端设备包括:PC机.移动终端(手机)