当前位置:主页>仓库管理软件> 列表

indy 使用 找库房管理软件

记账软件版1楼: 我用delphi7+indy9的TcpServer和TcpClient做的上位机,下位机是linux上c开发的程序,使用tcp/ip协议进行socket通讯,使用了SSL,出现一个问题:
下位机先连接到服务器,然后上位机的客户端在连接到服务器,通讯都正常;
但是如果下位机重起或断开再重新连接到服务器,上位机的客户端A能够发送命令到服务器,服务器正确发送给下位机,下位机也能正常工作并且返回命令到服务器,对于这个返回的命令服务器也能正确收到处理,并且转发A(调试时线程号都对),但是A却没有收到任何内容。

2楼: 提前一下, 如库存管理软件

3楼: 我们可以直接交流,给我发email将问题说清楚,如果还解决不了,我可以在新闻组上去问RLebeau(Indy目前的作者和维护人员)。

建议你先升级Indy再试,Indy9.0.50或Indy10.1.5。

4楼: hxb_leiyuan兄:
您的email是多少?我的是treemon@163.com

5楼: Indy9和Indy10应该是不能互换的吧?我现在项目已经做的差不多了,用的是Indy9.0.18;
第一次用这个做项目,测试时发现上面的问题很难解决。
刚到http://www.atozed.com/Indy/Plus/Files.iwp看了一下Indy9最高版本是9.0.19

6楼: 1[2006-03-24 16:04:03] 接收消息==============
2[2006-03-24 16:04:03] [CType]ctUDcuMan [IP]192.168.0.112 [Port]3971[联接时间2006-03-24 15:16:03][上次通讯时间2006-03-24 15:16:03][Thread ID:1900]
3[2006-03-24 16:04:03] 513
4[2006-03-24 16:04:03] ======================
5[2006-03-24 16:04:03] ======================
6[2006-03-24 16:04:03] 发送消息
7[2006-03-24 16:04:03] [CType]ctUDcuMan [IP]192.168.0.112 [Port]3971[联接时间2006-03-24 15:16:03][上次通讯时间2006-03-24 15:16:03][Thread ID:1900]
8[2006-03-24 16:04:03] 线程循环
9[2006-03-24 16:04:03] ======================
10[2006-03-24 16:04:03] ======================
11[2006-03-24 16:04:03] 发送消息
12[2006-03-24 16:04:03] [CType]ctDCU [IP]192.168.0.104 [Port]2048[联接时间2006-03-24 15:42:03][上次通讯时间2006-03-24 15:42:03][Thread ID:1820]
13[2006-03-24 16:04:03] 线程循环
14[2006-03-24 16:04:03] ======================
15[2006-03-24 16:04:03] ======================
16[2006-03-24 16:04:03] 发送消息
17[2006-03-24 16:04:03] [CType]ctDCU [IP]192.168.0.104 [Port]2048[联接时间2006-03-24 15:42:03][上次通讯时间2006-03-24 15:42:03][Thread ID:1820]
18[2006-03-24 16:04:03] 向该线程发送[Cmd:324][count:4][crc:29213]
19[2006-03-24 16:04:03] ======================
20[2006-03-24 16:04:03] 接收消息==============
21[2006-03-24 16:04:03] [CType]ctDCU [IP]192.168.0.104 [Port]2048[联接时间2006-03-24 15:42:03][上次通讯时间2006-03-24 15:42:03][Thread ID:1820]
22[2006-03-24 16:04:03] 324
23[2006-03-24 16:04:03] ======================
24[2006-03-24 16:04:03] ======================
25[2006-03-24 16:04:03] 发送消息
26[2006-03-24 16:04:03] [CType]ctUDcuMan [IP]192.168.0.112 [Port]3971[联接时间2006-03-24 15:16:03][上次通讯时间2006-03-24 15:16:03][Thread ID:1900]
27[2006-03-24 16:04:03] 线程循环
28[2006-03-24 16:04:03] ======================
29[2006-03-24 16:04:03] ======================
30[2006-03-24 16:04:03] 发送消息
31[2006-03-24 16:04:03] [CType]ctUDcuMan [IP]192.168.0.112 [Port]3971[联接时间2006-03-24 15:16:03][上次通讯时间2006-03-24 15:16:03][Thread ID:1900]
32[2006-03-24 16:04:03] 向该线程发送[Cmd:513][count:12][crc:60374]


33[2006-03-24 16:04:03] ======================
34[2006-03-24 16:04:03] ======================
35[2006-03-24 16:04:03] 发送消息
36[2006-03-24 16:04:03] [CType]ctDCU [IP]192.168.0.104 [Port]2048[联接时间2006-03-24 15:42:03][上次通讯时间2006-03-24 15:42:03][Thread ID:1820]
37[2006-03-24 16:04:03] 线程循环
38[2006-03-24 16:04:03] ======================

记账软件版7楼: 看这行
29[2006-03-24 16:04:03] ======================
30[2006-03-24 16:04:03] 发送消息
31[2006-03-24 16:04:03] [CType]ctUDcuMan [IP]192.168.0.112 [Port]3971[联接时间2006-03-24 15:16:03][上次通讯时间2006-03-24 15:16:03][Thread ID:1900]
32[2006-03-24 16:04:03] 向该线程发送[Cmd:513][count:12][crc:60374]
33[2006-03-24 16:04:03] ======================
服务器已经向客户端发了数据,客户端没有任何反应

8楼: 继续测试,研究

9楼: 建议用COMMVIEW软件跟踪一下数据包。

10楼: 谢谢crazyman2006的提示,我会用它做测试的。
上面的异常找到原因了,是我的上位机客户端在封装时有一个Exit跳出了线程的循环。
服务器的性能是现在要解决的首要问题了,看了以前的帖子对于indy的server评价都不好[:(]

11楼: 2006-04-07测试过程中对于Socket通讯的注意事项:
1、IdTCPClient接收数据需要使用线程循环接收;接收数据处理时对于前导码有误的处理一定要注意,
不能将线程的循环破坏,
2、通讯实现的方式: 定长数据的发送:前导码-命令-包内容-校验
变长数据的发送:前导码-命令-包长度-包内容-校验
(包长度也可使用固定结构体数组的组数实现)
3、对于网线断开的情况,通讯服务器在经过较长的时间才能判断到,触发断线事件;
4、对于异常断线,如断电等;通讯服务器需要在联接时进行判断,同一IP不同端口的线程都要断开
目前通讯服务器只对下位机在申请验证的时候进行了该处里(因为连接时不能判断是什么类型的客户端
所以在控制器申请验证的时候进行该处里);
如果针对上位机客户端进行该处里,那么一台PC同一时间只能用一个我们的客户端软件,客户端运行时
需要进行系统进程检测,如果存在控制器管理、用户管理、事件监视、综合管理、和其它扩展功能模块软件
时都不能运行。如果有多个运行只有最后一个连接的软件能够通讯;
5、通讯服务器维护一个线程列表,在一个客户端连接或断开服务器时维护该列表

12楼: 下载了一个DXSock组件包,很多朋友都说它做服务器性能好,不知是不是这样,现在准备使用它或者直接用winsocket,大家有好的建议给提一下?第一次做基于tcp/ip的项目。希望能把通讯做的稳定。[:)][:)][:)] 如库房管理软件