
实际使用场景中,阻塞模式,一个线程专门Accept 有新的连接之后,为每一个连接再创建一个线程来处理 Receive,也就是对于服务器来说,假设当前有10个工作的连接,那么至少需要11个线程。
你只需要开几个专门的线程来负责接受连接和接收数据就可以了。
这种阻塞模式不适合大并发量的网络程序,测试小程序没问题,大并发量时需要使用非阻塞模式,比如一般常用的select模式
百度 “select模型” 就可以搜到。
客户机端看你使用PC机还是单片机或者DSP都可以,但是使用不同的硬件环境编写串口程序有些差异,使用PC机的话,如果用VC,就用Windows API或者Mscom控件实现串口的通信,使用单片机,就用Keil C实现串口通信,DSP的话就是CCS环境了,GPRS的通信程序基本是相同的,VC中不使用API函数的话都是标准C实现的服务器端直接用PC机就可以了,用VC或者VB实现Socket的网络通信,就是给出一个人机交互的界面,显示并存储接收到的客户数据
这种东西是有的,你需要研究一下工业GPRS模块,连接好SIM卡,他与单片机通信都是标准的AT指令,直接通过串口与单片机或者电脑串口进行通信,不是很难。GPRS部分,模块不同,GPRS的使用方便程度也不同,具有透明数据传输功能的GPRS模块,贵些,但使用方便。
你的系统应该这样设计,数据采集部分用单片机采集数据,并且用单片机的串口连接GPRS模块,发送相应的数据给接收端的另一个模块,并且接受控制端发过来的控制指令,接收端的GPRS模块直接由串口连接电脑(两端都要注意电平匹配)。电脑上的上位机需要开发程序,最好使用VC++,上位机程序的作用主要是经由串口和GPRS模块发送控制命令给数据采集端,接受GPRS模块上来的数据信息,处理信息并且显示在屏幕上,或者供使用者使用。
你的项目难点在上位机上
工业GPRS模块淘宝上有的是,各种品牌,各种档次,协议是一样的。有专用的指令手册照着做就行了,买模块的商家也会提供相应的资料或者例程。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)