think_a_second 发表于 2011-5-1 13:03:25

IP端口划分方案请教

有一模块需要10个 C A N 通道的数据和IP互转,每个通道独立的,而且至少用一个tcp socket。数据量不大,而且不是时刻都有数据,但要在30ms内必须响应。两块这样的模块通过TCP连接,该如何规划socket?
根据ffxz某帖子上的回复。
一代码设计上:
1. 不要试图一直保持TCP连接;用的时候建立,不用的时候拆掉。
2. 心跳可以采用UDP的方式传送。
3. 设置接收超时;
4. 管理好网络用的buffer。

方案一
心跳用UDP,每个转IP的通道个各用一个tcp socket。udp作为心跳,并通知每个tcp socket 什么时候连接什么时候断开
方案二
每个转IP的通道个各用两个tcp socket,一个作为收,一个作为发。发送的socket用客户端,需要向IP发的时候连接,发完断开;接收的socket用服务器一直等待连接。

ffxz 发表于 2011-5-1 13:52:32

你这个是个10 CAN独立通道转IP的模块?模块是什么形式的,TCP Client还是TCP Server?

think_a_second 发表于 2011-5-1 14:48:21

回复【1楼】ffxz
你这个是个10 can独立通道转ip的模块?模块是什么形式的,tcp client还是tcp server?
-----------------------------------------------------------------------

1.对,是10个独立的CAN通道转IP
2.只定TCP,但没定server还是client。

本端和对端是用TCP
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_635727DHYMG5.png
(原文件名:结构示意图.png)

ffxz 发表于 2011-5-1 17:56:30

采用TCP Server居多,另外可以把TCP Live选项打开,这样可以当做心跳来使用。多参考下mbbill的代码工程

think_a_second 发表于 2011-5-9 11:36:16

现在配合对方改为UDP,比较好搞了

19001579 发表于 2011-5-13 23:11:09

TCP搞起来用LWIP我估计是长时间的话要死人。我试过了。很惨。只有是定时的断开连接重连。
页: [1]
查看完整版本: IP端口划分方案请教