bruce_helen 发表于 2014-9-4 21:03:39

【分享】i.MX6 linux tcp编程

接着之前的分享,为了方便使用,我将linux下的tcp接口作了一个封装,对外提供最简单的接口:打开,发送,接收



定义使用方法

调用API

wanstrive 发表于 2014-9-4 21:10:19

干货~~支持~~~

fengyunyu 发表于 2014-9-4 21:13:42

学习下linux编程

bruce_helen 发表于 2014-9-4 21:39:48

fengyunyu 发表于 2014-9-4 21:13
学习下linux编程

{:handshake:}

winterw 发表于 2014-9-4 22:06:53

有个问题一直没有弄明白,请教下楼主,给文件或结构或类起名字时,有叫xxx_helper的,这里的helper是什么意思或是暗示?

步之道 发表于 2014-9-4 22:18:00

感谢楼主分享经验。

步之道 发表于 2014-9-4 22:18:34

问一下楼主,怎么能做到文字和图片的按照自己想要的顺序排列

bruce_helen 发表于 2014-9-4 22:48:21

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

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

bruce_helen 发表于 2014-9-4 22:49:08

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

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

dragon19809200 发表于 2014-9-4 22:50:59

学习了   

wxfje 发表于 2014-9-4 23:10:39

咱感觉这么简单呢

步之道 发表于 2014-9-4 23:13:26

bruce_helen 发表于 2014-9-4 22:49
添加附件时注意顺序即可。

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

ludikn 发表于 2014-9-4 23:49:24

LZ,有没有完整的啊。不要贴个部分啊!

bbstr 发表于 2014-9-4 23:59:52

看起来是server端,client端做了没?

bruce_helen 发表于 2014-9-5 05:56:26

bbstr 发表于 2014-9-4 23:59
看起来是server端,client端做了没?

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

bruce_helen 发表于 2014-9-5 06:00:34

ludikn 发表于 2014-9-4 23:49
LZ,有没有完整的啊。不要贴个部分啊!

代码都给了啊,完整的啊

bruce_helen 发表于 2014-9-5 06:02:00

wxfje 发表于 2014-9-4 23:10
咱感觉这么简单呢

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

fbestwish 发表于 2014-9-5 06:26:12

感觉有点深奥啊,插不上嘴

avr-arm 发表于 2014-9-5 06:49:25

干货,果断订楼主

bruce_helen 发表于 2014-9-5 08:05:07

fbestwish 发表于 2014-9-5 06:26
感觉有点深奥啊,插不上嘴

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

fbestwish 发表于 2014-9-5 08:08:58

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

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

franki 发表于 2014-9-5 08:24:47

程序是比较简单    应该是Linux下的多线程编程

bruce_helen 发表于 2014-9-5 08:29:47

fbestwish 发表于 2014-9-5 08:08
我没有这方面的基础,回头好好看看吧,谢谢分享

恩,加油,有问题一起讨论{:smile:}

bruce_helen 发表于 2014-9-5 08:30:58

franki 发表于 2014-9-5 08:24
程序是比较简单    应该是Linux下的多线程编程

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

momo_li 发表于 2014-9-5 08:34:47

这是用的什么IDE,是tkstdio吗?

abszy 发表于 2014-9-5 08:45:22

谢谢楼主了 刚发完CAN的又来了tcp的不错不错

jiang887786 发表于 2014-9-5 08:52:58

好贴,谢谢分享

bruce_helen 发表于 2014-9-5 11:32:08

momo_li 发表于 2014-9-5 08:34
这是用的什么IDE,是tkstdio吗?

notepad++,还有一个source insight{:smile:}

wxfje 发表于 2014-9-5 19:27:11

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

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

bruce_helen 发表于 2014-9-5 20:19:16

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

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

wxfje 发表于 2014-9-5 21:21:52

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

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

bruce_helen 发表于 2014-9-5 22:48:39

wxfje 发表于 2014-9-5 21:21
主要是不懂LINUX呀,而且linux也太难啃了,暂时不打算学习Linux

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

wxfje 发表于 2014-9-5 23:22:41

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

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

bruce_helen 发表于 2014-9-6 06:09:53

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

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

fengyunyu 发表于 2014-9-6 06:17:30

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

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

bruce_helen 发表于 2014-9-6 08:45:11

fengyunyu 发表于 2014-9-6 06:17
跑linux如何提高实时性,有建议么?

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

fengyunyu 发表于 2014-9-6 15:55:08

bruce_helen 发表于 2014-9-6 06:09
我也是刚开始认真学习linux。
以后多交流,只有在交流中才能学到更多...

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

浪里白条 发表于 2014-9-6 16:00:57

Linux我觉得仍然是未来嵌入式这一块的趋势,Android是无法替代的。

bruce_helen 发表于 2014-9-6 22:15:06

fengyunyu 发表于 2014-9-6 15:55
LZ做Linux软件开发几年了?是不是有点谦虚了

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

FSL_TICS_Rita 发表于 2014-9-12 09:45:01

非常不错,感谢楼主整理并分享啊~~

GodHunter 发表于 2014-12-24 11:57:52

最近在学linux,不过资料好杂啊。楼主有什么好的意见没?

Juggernaut 发表于 2014-12-25 00:48:52

这个就是socket编程吧,用的什么库啊

GFM123 发表于 2014-12-25 07:25:56

很不错,收藏。

superrf 发表于 2014-12-25 08:10:35

i.MX linux不支持标准socket接口吗

hyf88 发表于 2014-12-25 08:50:52

不错,收藏,

sunliezhi 发表于 2014-12-25 18:56:20

linux tcp编程 收藏

craigtao 发表于 2014-12-27 12:33:52

这个是自带的网口还是使用外接的3G/2G模块的?链接外网的话,使用的是p2p拨号吗?

bruce_helen 发表于 2014-12-27 14:19:19

craigtao 发表于 2014-12-27 12:33
这个是自带的网口还是使用外接的3G/2G模块的?链接外网的话,使用的是p2p拨号吗?...

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

craigtao 发表于 2014-12-27 15:52:33

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

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

这个只是基于Linux上编程,

bruce_helen 发表于 2014-12-27 18:18:03

craigtao 发表于 2014-12-27 15:52
我知道,我只是问楼主硬件上采用什么方式的,

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

网线直连

craigtao 发表于 2014-12-27 19:39:28

bruce_helen 发表于 2014-12-27 18:18
网线直连

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

craigtao 发表于 2014-12-27 19:42:57

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

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

craigtao 发表于 2014-12-27 19:53:18

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

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

wxfje 发表于 2014-12-27 20:13:14

craigtao 发表于 2014-12-27 19:42
你现在有在产品中使用lwip?

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

craigtao 发表于 2014-12-27 20:18:32

wxfje 发表于 2014-12-27 20:13
有用到,做client连服务器,数据量比较小

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

wxfje 发表于 2014-12-27 20:31:21

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

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

wxfje 发表于 2014-12-27 20:34:13

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

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

craigtao 发表于 2014-12-27 20:38:28

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

你产品上这么弄的??

wxfje 发表于 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上是这样的

craigtao 发表于 2014-12-27 21:30:27

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

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

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

F_QD_000B 发表于 2014-12-27 22:14:35

~~支持~didingd顶米

franki 发表于 2014-12-27 22:27:00

linux下的多线程编程 。

franki 发表于 2014-12-27 22:32:55

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

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

wxfje 发表于 2014-12-27 23:12:00

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

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

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

craigtao 发表于 2014-12-27 23:47:58

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

嗯嗯,,学习了,谢谢啊,
页: [1]
查看完整版本: 【分享】i.MX6 linux tcp编程