主题:通讯 共有33711人关注过本帖 |
---|
wp |
1楼 |
通讯 Post By:2005-6-6 14:50:00 [只看该作者]
是不是tcp通讯要比gprs通讯建立连接慢一些?每次当etr232i进行tcp连接断开后,再次进行连接时,都会在很长一段时间连接不上,除非手动按reset或重开服务器,才能连上。即使很长时间连上后,通讯很不稳定!不稳定体现在服务器发的数据收不到,但232i能处于连接状态!
怎样能比较稳定的进行tcp通讯,每次重连连不上,不知道是网络问题,还是应该在写这段程序上注意什么问题,还有我每次调用sysreboot()这个函数,好象效果没有手动reset彻底。时钟在sysreboot()后,好象还可以取到sysreboot()前的值,变量值好象没有完全清空。 |
|
单帖管理 | 引用 | 回复 |
x10 |
2楼 |
Post By:2005-6-6 21:41:00 [只看该作者]
请确认以客户端方式打开连接时,每次督需要使用不同的本地端口号,调用myport( ),因为,按照TCP的协议,每一个连接号在关闭后有大约2min不能再用,否则会被协议当成上一次连接的操作,于是系统处于异常状态,直至超时(timeout)。
目前的sysreboot只是软件重起,没有对硬件复位,我们在后续的新版中会加入CPU对外设的复位操作。你说的时钟是指clock()值吗?不是很明白。 |
|
单帖管理 | 引用 | 回复 |
wp |
3楼 |
Post By:2005-6-7 8:53:00 [只看该作者]
我也注意到这一点,所以每次当它断开重连时,我都会让它重新获取本地端口号和连接号,但每次重新获得的连接号都是上一次断开前的连接号,而且获得连接号总是为0。我运行这么长时间从来没有获得过0以外的连接号?
我将取到的时钟给struct date d;struct time t;然后sysreboot,而struct date d;struct time t中的值好象并没有清空。 |
|
单帖管理 | 引用 | 回复 |
x10 |
4楼 |
Post By:2005-6-7 9:12:00 [只看该作者]
打开连接返回的连接号不是所说的TCP的端口号,连接号仅仅是用于操作该连接的handler,如果同时只有一个连接,通常都是0,而本地端口号(local port number)是ConnOpen()的一个输入参数(unsigned int),请参阅编程手册对TCP API函数的说明。
|
|
单帖管理 | 引用 | 回复 |
wp |
5楼 |
Post By:2005-6-7 9:24:00 [只看该作者]
刚刚我试了一下,如果在sysreboot后,进行连接的话,使用myport( )得到的端口号都在2000以下,但TCP API函数编程手册上写的范围是2000-9000,那2000以下的本地端口进行连接会不会影响连接的质量?
|
|
单帖管理 | 引用 | 回复 |