搜索
bottom↓
回复: 23

嵌入式Linux应用程序开发-(8)TCP-IP网络通信应用程序(TCP-...

[复制链接]

出0入0汤圆

发表于 2019-5-25 11:01:56 | 显示全部楼层 |阅读模式
基于TCP/IP的网络通信应用程序(TCP-Server)
上一篇文章讲述了在i.MX6UL开发板中,以客户端的角色,使用TCP/IP协议进行网络通信。
嵌入式Linux应用程序开发-(7)TCP-IP网络通信应用程序(TCP-Client)
本章节,将以服务端的角色进行讲解,如何开发一个TCP服务端(TCP-Server)。
目标:使用QT提供的TCP/IP网络通信类,实现一个简单的TCP服务端(TCP-Server)
功能:
(1)开发板界面显示开发板服务端的网络IP地址。
(2)可手动输入需要监听的网络端口。
(3)提供按钮,可手动开启/停止服务端监听。
(4)界面显示TCP客户端的收发数据,并提供清屏按钮。
(5)提供服务端手动发送按钮和自动发送按钮。
开发板运行TCP服务端(TCP-Server)后,界面如下图所示:

服务端界面描述:
(1)服务端程序启动后,先获取本机IP地址作为服务器的IP地址。程序默认监听4418端口,用户可自定义修改需要监听的端口。
(2)点击[LISTEN]按钮,开始服务端监听,等待客户端连接。
(3)客户端连接成功后,会在数据显示窗口提示客户端上线,并在客户端列表显示每个客户端的IP地址和连接端口。
(4)用户点击[START_AUTO_SEND]按钮,服务端以1秒的频率,自动对所有客户端发送固定数据。再次点击该按钮,停止自动发送数据。
(5)用户每点击一次[tcp_send_data]按钮,服务端对指定的客户端发送一帧固定数据。
(6)用户点击[CLEAR]按钮,清空数据显示窗口的内容。

对于TCP/IP的服务端(TCP-Server)角色,在进行数据通信之前,一般会经历以下过程:
(1)调用socket套接字函数,创建套接字的文件描述符(这个套接字是用来监听客户端连接请求的)。
(2)调用bind()绑定函数,将创建成功的套接字与需要监听的IP地址和Port绑定。
(3)绑定成功后,就可以调用listen()函数进行监听,等待客户端的连接请求。(服务端需要成功调用listen()函数,客户端才可以发起连接请求,否则,客户端的连接会出错)
(4)调用listen()函数成功后,若此时有客户端申请建立连接,服务端则调用accept()函数,接收客户端的连接,并自动产生用于网络I/O通信的套接字,作为accept()函数的返回值。(accept()函数自动产生的套接字是用来进行网络I/O数据收发的,与socket()套接字不同)
(5)当客户端连接成功后,服务端就可以基于accept()函数返回的套接字,使用系统调用的读写函数read()/write()进行数据收发了。

使用嵌入式QT进行TCP/IP的网络通信应用程序开发,对于TCP服务端,QT的network类库提供的QTcpServer类,这个类继提供了一系列的服务端网络操作接口函数,如:监听函数listen(),阻塞等待客户端连接waitForNewConnection(),虚函数incomingConnection()用来处理客户端的连接请求。
更多接口函数,具体可以参阅 QtNetwork/qtcpserver.h 文件的内容。在服务端应用程序里面,我们通常建立一个继承于QTcpSocket的类,来描述每一个连接成功的客户端,每一个客户端的具体信息,可以通过这个类来获取。关于这个类的使用方法,请参考上一章节的内容。

TCP服务端(TCP-Server)应用程序的开发过程,请点击这里

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-5-25 13:58:38 | 显示全部楼层
支持楼主继续更新。透漏下下面准备更新方向?

出0入0汤圆

 楼主| 发表于 2019-5-25 15:28:08 | 显示全部楼层
LVmcu 发表于 2019-5-25 13:58
支持楼主继续更新。透漏下下面准备更新方向?

感谢支持,暂不透露,留点悬念,哈哈

出130入0汤圆

发表于 2019-5-25 19:08:51 来自手机 | 显示全部楼层
楼主V⁵啊。紫薯布丁。

出0入0汤圆

 楼主| 发表于 2019-5-25 20:22:59 | 显示全部楼层
主楼一区401 发表于 2019-5-25 19:08
楼主V⁵啊。紫薯布丁。

感谢支持

出0入0汤圆

发表于 2019-5-25 20:38:03 | 显示全部楼层
收藏一下,后面花时间学习一下

出0入0汤圆

发表于 2019-5-25 20:53:16 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

 楼主| 发表于 2019-5-25 21:13:12 | 显示全部楼层
NIC 发表于 2019-5-25 20:38
收藏一下,后面花时间学习一下

感谢关注

出0入0汤圆

 楼主| 发表于 2019-5-25 21:13:36 | 显示全部楼层

感谢关注

出0入0汤圆

发表于 2019-5-25 21:38:15 | 显示全部楼层
关注,楼主推荐几个实战项目学习下。

出0入0汤圆

 楼主| 发表于 2019-5-25 22:45:40 | 显示全部楼层
meirenai 发表于 2019-5-25 21:38
关注,楼主推荐几个实战项目学习下。

感谢关注,后面会有实战项目呢

出0入0汤圆

 楼主| 发表于 2019-5-25 22:46:18 | 显示全部楼层
meirenai 发表于 2019-5-25 21:38
关注,楼主推荐几个实战项目学习下。

仅仅讲述这些理论基础知识,确实枯燥,实战项目会比较有趣

出0入0汤圆

发表于 2019-5-25 22:49:05 | 显示全部楼层
实战项目越简单,越好,便于入门。

出0入0汤圆

 楼主| 发表于 2019-5-26 11:12:18 | 显示全部楼层
bbbbbv 发表于 2019-5-25 22:49
实战项目越简单,越好,便于入门。

感谢关注!实战项目,都是需要一定基础才能理解的呢。而基础知识,恰恰是最枯燥无味的。

出130入0汤圆

发表于 2019-5-26 17:32:23 | 显示全部楼层

期待楼主的实战篇,试着在NUC980上玩一下

出0入0汤圆

 楼主| 发表于 2019-5-26 19:14:05 | 显示全部楼层

感谢支持

出0入0汤圆

 楼主| 发表于 2019-5-26 19:14:45 | 显示全部楼层
主楼一区401 发表于 2019-5-26 17:32
期待楼主的实战篇,试着在NUC980上玩一下

NUC980跟NUC972差不多,都是性价比很高的芯片

出130入0汤圆

发表于 2019-5-26 21:19:37 | 显示全部楼层
广轻电气091 发表于 2019-5-26 19:14
NUC980跟NUC972差不多,都是性价比很高的芯片

刚看了您的X宝,请问后期会出STM32MP1的板子吗?

出0入0汤圆

 楼主| 发表于 2019-5-27 08:06:31 | 显示全部楼层
主楼一区401 发表于 2019-5-26 21:19
刚看了您的X宝,请问后期会出STM32MP1的板子吗?

暂时没有这个计划呢

出0入0汤圆

发表于 2019-5-30 10:36:18 | 显示全部楼层
感谢楼主分享...

出0入0汤圆

 楼主| 发表于 2019-5-30 10:50:39 | 显示全部楼层

感谢关注

出0入0汤圆

发表于 2019-6-12 17:13:34 | 显示全部楼层
感谢楼主,跟着你走了

出0入0汤圆

 楼主| 发表于 2019-6-12 17:38:17 | 显示全部楼层
ckhf 发表于 2019-6-12 17:13
感谢楼主,跟着你走了

感谢关注,一起学习,一起进步
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 17:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表