求助:indy9能不能使两个客户端在一台电脑运行 近期做了一套及时通讯的系统,客户端采用idtcpclient与服务器的idtcpserver及时交互,发现如果两个客户端在一台电脑上面同时运行,会出现错误。如A、B都是客户端,但其与服务端的通讯内容不同,一旦他们在一台电脑运行,就会出现接收的信息错误。即本应发给B的信息,结果A却收到了。不知道他们是不是共用一个接收缓冲区? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 服务器端有分辨不同SOCKET来发送吧?如果服务器端做得不好,没有通过ATHREAD.HANDLE来分辨,就可能会发生你说的情况。 这肯定是A和B两个socket,你的问题还是你没处理好 LZ用阻塞模式了么?,用阻塞模式的多线程处理,不同的线程处理不同的socket客户端连接,我记得应该没问题的啊 indy肯定没有这种限制了,你再检查下代码逻辑是不是你的服务器端回应错地方了 谢谢大家的参与。服务端是采用阻塞模式的,服务端的接收是没有问题的,可以区分出是A发送的还是B发送的。问题出现在客户端,因为我采用的通讯是握手的方式,即客户端和服务器一问一答的通讯。这造成了A和B同时工作时,他们可能同时读取缓冲区(A、B的发送接收内容不一样),这时才发现他们的读取结果不正常,说明服务端是没有问题的。问题应该在客户端,测试了多种方式,还是不能正常同时工作,加上网络速度的问题,现在我采用一台电脑只允许一个客户端的工作方式,这样避免了这种错误,也便于管理。我做的通讯系统终于成功了,采用indy9的IdTCPServer和IdTCPClient组件,通讯正常,客户端功能各不相同。服务端定时检测在线情况,自动清除已断开的连接。 对于客户端,A和B的socket、Athread.handle、端口号都是不同的,如果结构体里面有这些标志,肯定不会弄混啊。通过限制本地不能多开,个人觉得不是一个好办法。 我是新来的菜鸟,正在学Socket的知识,想借鉴一下您做的那个程序,如果可以 请发到我邮箱 [email protected] 可以加我QQ 497812165 互相学习 和借鉴。 找一个条形码打印源码 怎么让程序不在任务管理器的应用程序列表中显示??? label移动问题 adoquery的使用方法一问 动态库问题。请高手指点。谢了先 shellexecute 位操作 打印单位的人员信息如何实现跳页。 B/S程序的设计难点在哪里?有没有这方面比较好的书籍可以推荐? master..xp cmdshell 执行EXE socket的send函数如何传递vector变量,长度那块儿怎么算? 在Delphi中写SQL语句,遇到匹配问题
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货