搜索
bottom↓
回复: 64

【分享】i.MX6 linux tcp编程

[复制链接]

出0入0汤圆

发表于 2014-9-4 21:03:39 | 显示全部楼层 |阅读模式
接着之前的分享,为了方便使用,我将linux下的tcp接口作了一个封装,对外提供最简单的接口:打开,发送,接收



定义使用方法

调用API

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2014-9-4 21:10:19 | 显示全部楼层
干货~~支持~~~

出100入101汤圆

发表于 2014-9-4 21:13:42 | 显示全部楼层
学习下linux编程

出0入0汤圆

 楼主| 发表于 2014-9-4 21:39:48 | 显示全部楼层


出0入0汤圆

发表于 2014-9-4 22:06:53 | 显示全部楼层
有个问题一直没有弄明白,请教下楼主,给文件或结构或类起名字时,有叫xxx_helper的,这里的helper是什么意思或是暗示?

出0入0汤圆

发表于 2014-9-4 22:18:00 | 显示全部楼层
感谢楼主分享经验。

出0入0汤圆

发表于 2014-9-4 22:18:34 | 显示全部楼层
问一下楼主,怎么能做到文字和图片的按照自己想要的顺序排列

出0入0汤圆

 楼主| 发表于 2014-9-4 22:48:21 | 显示全部楼层
winterw 发表于 2014-9-4 22:06
有个问题一直没有弄明白,请教下楼主,给文件或结构或类起名字时,有叫xxx_helper的,这里的helper是什么意 ...

没有特殊意义,就是一种命名方法,提供简单的接口,方便使用。

出0入0汤圆

 楼主| 发表于 2014-9-4 22:49:08 | 显示全部楼层
步之道 发表于 2014-9-4 22:18
问一下楼主,怎么能做到文字和图片的按照自己想要的顺序排列

添加附件时注意顺序即可。

出0入0汤圆

发表于 2014-9-4 22:50:59 来自手机 | 显示全部楼层
学习了   

出0入0汤圆

发表于 2014-9-4 23:10:39 | 显示全部楼层
咱感觉这么简单呢

出0入0汤圆

发表于 2014-9-4 23:13:26 | 显示全部楼层
bruce_helen 发表于 2014-9-4 22:49
添加附件时注意顺序即可。

但是我填的时候是按顺序填的,但是现实出来的时候图就堆一起了,没有放到对应文字下。

出0入0汤圆

发表于 2014-9-4 23:49:24 | 显示全部楼层
LZ,有没有完整的啊。不要贴个部分啊!

出0入0汤圆

发表于 2014-9-4 23:59:52 来自手机 | 显示全部楼层
看起来是server端,client端做了没?

出0入0汤圆

 楼主| 发表于 2014-9-5 05:56:26 | 显示全部楼层
bbstr 发表于 2014-9-4 23:59
看起来是server端,client端做了没?

哥们看的仔细,还没做client端,有时间再完善

出0入0汤圆

 楼主| 发表于 2014-9-5 06:00:34 | 显示全部楼层
ludikn 发表于 2014-9-4 23:49
LZ,有没有完整的啊。不要贴个部分啊!

代码都给了啊,完整的啊

出0入0汤圆

 楼主| 发表于 2014-9-5 06:02:00 | 显示全部楼层
wxfje 发表于 2014-9-4 23:10
咱感觉这么简单呢

被你看出来了, client端还没做。
从功能来说的话代码非常简单,只提供更好用的接口。无他

出0入0汤圆

发表于 2014-9-5 06:26:12 | 显示全部楼层
感觉有点深奥啊,插不上嘴

出0入0汤圆

发表于 2014-9-5 06:49:25 来自手机 | 显示全部楼层
干货,果断订楼主

出0入0汤圆

 楼主| 发表于 2014-9-5 08:05:07 | 显示全部楼层
fbestwish 发表于 2014-9-5 06:26
感觉有点深奥啊,插不上嘴

这个是最简单的socket编程哦,没有任何复杂的功能。

出0入0汤圆

发表于 2014-9-5 08:08:58 | 显示全部楼层
bruce_helen 发表于 2014-9-5 08:05
这个是最简单的socket编程哦,没有任何复杂的功能。

我没有这方面的基础,回头好好看看吧,谢谢分享

出0入0汤圆

发表于 2014-9-5 08:24:47 | 显示全部楼层
程序是比较简单    应该是Linux下的多线程编程

出0入0汤圆

 楼主| 发表于 2014-9-5 08:29:47 | 显示全部楼层
fbestwish 发表于 2014-9-5 08:08
我没有这方面的基础,回头好好看看吧,谢谢分享

恩,加油,有问题一起讨论

出0入0汤圆

 楼主| 发表于 2014-9-5 08:30:58 | 显示全部楼层
franki 发表于 2014-9-5 08:24
程序是比较简单    应该是Linux下的多线程编程

是的,加了一个线程专门读取数据。读取TCP的数据还有其他方法,比如socket异步操作,但是我感觉那个没这个来的清晰。

出500入109汤圆

发表于 2014-9-5 08:34:47 | 显示全部楼层
这是用的什么IDE,是tkstdio吗?

出0入0汤圆

发表于 2014-9-5 08:45:22 | 显示全部楼层
谢谢楼主了 刚发完CAN的又来了tcp的  不错不错

出0入0汤圆

发表于 2014-9-5 08:52:58 | 显示全部楼层
好贴,谢谢分享

出0入0汤圆

 楼主| 发表于 2014-9-5 11:32:08 | 显示全部楼层
momo_li 发表于 2014-9-5 08:34
这是用的什么IDE,是tkstdio吗?

notepad++,还有一个source insight

出0入0汤圆

发表于 2014-9-5 19:27:11 | 显示全部楼层
bruce_helen 发表于 2014-9-5 06:02
被你看出来了, client端还没做。
从功能来说的话代码非常简单,只提供更好用的接口。无他 ...

最近也在玩网络这块,但是是lwip,确实不难,但要是能做稳定就不容易了,至少我现在还没达到那功力

出0入0汤圆

 楼主| 发表于 2014-9-5 20:19:16 | 显示全部楼层
wxfje 发表于 2014-9-5 19:27
最近也在玩网络这块,但是是lwip,确实不难,但要是能做稳定就不容易了,至少我现在还没达到那功力 ...

恩,单片机上的TCP/IP玩温度还是不容易的。linux上的网络协议栈经过这么多年的发展已经非常稳定了,可以考虑用个低端的ARM9跑linux代替

出0入0汤圆

发表于 2014-9-5 21:21:52 | 显示全部楼层
bruce_helen 发表于 2014-9-5 20:19
恩,单片机上的TCP/IP玩温度还是不容易的。linux上的网络协议栈经过这么多年的发展已经非常稳定了,可以 ...

主要是不懂LINUX呀,而且linux也太难啃了,暂时不打算学习Linux

出0入0汤圆

 楼主| 发表于 2014-9-5 22:48:39 | 显示全部楼层
wxfje 发表于 2014-9-5 21:21
主要是不懂LINUX呀,而且linux也太难啃了,暂时不打算学习Linux

呵呵,我之前也是搞单片机的(STM32),但是我感觉linux肯定是以后大的发展方向,所以才开始学习linux,越学越感觉到这才是时代的前沿,值得我们去搞。

出0入0汤圆

发表于 2014-9-5 23:22:41 | 显示全部楼层
bruce_helen 发表于 2014-9-5 22:48
呵呵,我之前也是搞单片机的(STM32),但是我感觉linux肯定是以后大的发展方向,所以才开始学习linux, ...

大势所趋吗?看来以后可以慢慢看看Linux了,近段时间在啃tcpip呢,估计这个忙完了,还要进行蓝牙的学习呢,唉,太忙了
以后学习linux还要多向您请教才是呢

出0入0汤圆

 楼主| 发表于 2014-9-6 06:09:53 | 显示全部楼层
wxfje 发表于 2014-9-5 23:22
大势所趋吗?看来以后可以慢慢看看Linux了,近段时间在啃tcpip呢,估计这个忙完了,还要进行蓝牙的学习呢 ...

我也是刚开始认真学习linux。
以后多交流,只有在交流中才能学到更多

出100入101汤圆

发表于 2014-9-6 06:17:30 | 显示全部楼层
bruce_helen 发表于 2014-9-5 20:19
恩,单片机上的TCP/IP玩温度还是不容易的。linux上的网络协议栈经过这么多年的发展已经非常稳定了,可以 ...

跑linux如何提高实时性,有建议么?

出0入0汤圆

 楼主| 发表于 2014-9-6 08:45:11 | 显示全部楼层
fengyunyu 发表于 2014-9-6 06:17
跑linux如何提高实时性,有建议么?

linux内核现在实时性相比之前有了很大的提高,但是还不能跟单片机的RTOS的实时性相比。真想在linux上使用硬实时也有专门的linux,不过好像要收费,我也没接触过。

出100入101汤圆

发表于 2014-9-6 15:55:08 | 显示全部楼层
bruce_helen 发表于 2014-9-6 06:09
我也是刚开始认真学习linux。
以后多交流,只有在交流中才能学到更多  ...

LZ做Linux软件开发几年了?是不是有点谦虚了

出0入0汤圆

发表于 2014-9-6 16:00:57 | 显示全部楼层
Linux我觉得仍然是未来嵌入式这一块的趋势,Android是无法替代的。

出0入0汤圆

 楼主| 发表于 2014-9-6 22:15:06 | 显示全部楼层
fengyunyu 发表于 2014-9-6 15:55
LZ做Linux软件开发几年了?是不是有点谦虚了

初学者,没必要谦虚,越深入就越觉得要学的东西越多,我要走的路还很长。

出0入0汤圆

发表于 2014-9-12 09:45:01 | 显示全部楼层
非常不错,感谢楼主整理并分享啊~~

出0入0汤圆

发表于 2014-12-24 11:57:52 | 显示全部楼层
最近在学linux,不过资料好杂啊。楼主有什么好的意见没?

出0入0汤圆

发表于 2014-12-25 00:48:52 | 显示全部楼层
这个就是socket编程吧,用的什么库啊

出0入0汤圆

发表于 2014-12-25 07:25:56 | 显示全部楼层
很不错,收藏。

出0入0汤圆

发表于 2014-12-25 08:10:35 | 显示全部楼层
i.MX linux不支持标准socket接口吗

出0入0汤圆

发表于 2014-12-25 08:50:52 | 显示全部楼层
不错,收藏,

出0入4汤圆

发表于 2014-12-25 18:56:20 | 显示全部楼层
linux tcp编程 收藏

出0入0汤圆

发表于 2014-12-27 12:33:52 | 显示全部楼层
这个是自带的网口还是使用外接的3G/2G模块的?  链接外网的话,使用的是p2p拨号吗?

出0入0汤圆

 楼主| 发表于 2014-12-27 14:19:19 | 显示全部楼层
craigtao 发表于 2014-12-27 12:33
这个是自带的网口还是使用外接的3G/2G模块的?  链接外网的话,使用的是p2p拨号吗?  ...

这个和使用的模块还有拨号没有关系,TCP属于上层协议,不关心底层的实现细节

出0入0汤圆

发表于 2014-12-27 15:52:33 | 显示全部楼层
bruce_helen 发表于 2014-12-27 14:19
这个和使用的模块还有拨号没有关系,TCP属于上层协议,不关心底层的实现细节 ...

我知道,我只是问楼主硬件上采用什么方式的,

这个只是基于Linux上编程,

出0入0汤圆

 楼主| 发表于 2014-12-27 18:18:03 | 显示全部楼层
craigtao 发表于 2014-12-27 15:52
我知道,我只是问楼主硬件上采用什么方式的,

这个只是基于Linux上编程, ...

网线直连

出0入0汤圆

发表于 2014-12-27 19:39:28 | 显示全部楼层

你现在只是学习实验阶段的吗? 还是你们的产品就是要直接连接到网线上的?

出0入0汤圆

发表于 2014-12-27 19:42:57 | 显示全部楼层
wxfje 发表于 2014-9-5 19:27
最近也在玩网络这块,但是是lwip,确实不难,但要是能做稳定就不容易了,至少我现在还没达到那功力 ...

你现在有在产品中使用lwip?

出0入0汤圆

发表于 2014-12-27 19:53:18 | 显示全部楼层
bruce_helen 发表于 2014-9-5 20:19
恩,单片机上的TCP/IP玩温度还是不容易的。linux上的网络协议栈经过这么多年的发展已经非常稳定了,可以 ...

在嵌入式设备端,写server没有多大的意义吧?! 一般都是client的吧,请指导指导,

出0入0汤圆

发表于 2014-12-27 20:13:14 | 显示全部楼层
craigtao 发表于 2014-12-27 19:42
你现在有在产品中使用lwip?

有用到,做client连服务器,数据量比较小

出0入0汤圆

发表于 2014-12-27 20:18:32 | 显示全部楼层
wxfje 发表于 2014-12-27 20:13
有用到,做client连服务器,数据量比较小

只是做客户端的,是吧,稳定吗?  听说使用lwip好像内存管理是个大问题?

出0入0汤圆

发表于 2014-12-27 20:31:21 | 显示全部楼层
craigtao 发表于 2014-12-27 19:53
在嵌入式设备端,写server没有多大的意义吧?! 一般都是client的吧,请指导指导, ...

不能这么说,看实现什么功能
我做过一个简单的tcp server,用于局域网内控制的,只是能够连接的client不多而已

出0入0汤圆

发表于 2014-12-27 20:34:13 | 显示全部楼层
craigtao 发表于 2014-12-27 20:18
只是做客户端的,是吧,稳定吗?  听说使用lwip好像内存管理是个大问题? ...

做过客户端,也做过服务端,确实不是很稳定,但一般不会造成死机,只是连不上,只要重新断开连接再重连就好了,毕竟是开源免费的,收费的tcpip协议栈应该不错

出0入0汤圆

发表于 2014-12-27 20:38:28 | 显示全部楼层
wxfje 发表于 2014-12-27 20:31
不能这么说,看实现什么功能
我做过一个简单的tcp server,用于局域网内控制的,只是能够连接的client不 ...

你产品上这么弄的??

出0入0汤圆

发表于 2014-12-27 21:22:54 | 显示全部楼层
craigtao 发表于 2014-12-27 20:38
你产品上这么弄的??

有个ssdp协议,
通过ssdp可以发现局域网内提供服务的设备,这时就可以得到提供服务设备的IP,然后TCP client就可以连接服务器了

在局域网内做服务器,唯一麻烦的就是client怎么样才能知道服务器的IP,通过SSDP就可以实现,而SSDP是建立在UDP的基础上的,所以还需要实现一个udp client,在LWIP上是这样的

出0入0汤圆

发表于 2014-12-27 21:30:27 | 显示全部楼层
wxfje 发表于 2014-12-27 21:22
有个ssdp协议,
通过ssdp可以发现局域网内提供服务的设备,这时就可以得到提供服务设备的IP,然后TCP cli ...

“”在局域网内做服务器,唯一麻烦的就是client怎么样才能知道服务器的IP“”  

这个还能智能的发现吗?  这不应该是在客户端设置的吗?

出0入0汤圆

发表于 2014-12-27 22:14:35 | 显示全部楼层
~~支持~didingd顶米

出0入0汤圆

发表于 2014-12-27 22:27:00 | 显示全部楼层
linux下的多线程编程 。

出0入0汤圆

发表于 2014-12-27 22:32:55 | 显示全部楼层
bruce_helen 发表于 2014-9-5 08:30
是的,加了一个线程专门读取数据。读取TCP的数据还有其他方法,比如socket异步操作,但是我感觉那个没这 ...

嗯 ,你这个方法比较清晰 。linux下多线程编程优势还是挺明显的

出0入0汤圆

发表于 2014-12-27 23:12:00 | 显示全部楼层
craigtao 发表于 2014-12-27 21:30
“”在局域网内做服务器,唯一麻烦的就是client怎么样才能知道服务器的IP“”  

这个还能智能的发现吗? ...

你的产品不可能规定人家局域网必须使用的IP段吧,一般IP地址都是通过DHCP获取,这样的话,服务器的IP地址就是不定的,所以client必须通过其他手段获取服务器的IP才可以的
通过SSDP就可以

出0入0汤圆

发表于 2014-12-27 23:47:58 | 显示全部楼层
wxfje 发表于 2014-12-27 23:12
你的产品不可能规定人家局域网必须使用的IP段吧,一般IP地址都是通过DHCP获取,这样的话,服务器的IP地址 ...

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

本版积分规则

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

GMT+8, 2024-5-10 17:45

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

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