用deplphi制作即时通讯时,
服务器端用一个nmudp来截取客户端的信息,然后发一个回复给客户端
客户端也用一个nmudp来作类似的处理但是若一台机器上同时运行多个客户端程序,IP和端口号相同,结果服务器发来的消息总被第一个客户端截取,第二个客户端程序收不到信息,有谁能解释一下这是为什么,
若两个客户端IP和端口号相同,则同时都能收到服务器信息,该如何处理?
服务器端用一个nmudp来截取客户端的信息,然后发一个回复给客户端
客户端也用一个nmudp来作类似的处理但是若一台机器上同时运行多个客户端程序,IP和端口号相同,结果服务器发来的消息总被第一个客户端截取,第二个客户端程序收不到信息,有谁能解释一下这是为什么,
若两个客户端IP和端口号相同,则同时都能收到服务器信息,该如何处理?
解决方案 »
- 配置器修改加壳软件的图片,提示不是有效文件!
- delphi中如何插入jpg图片
- 我要只身一个人到成都(对我来说是外地啊),有只身一人到外地生活经历的朋友来说说各自的经验啊,比如如何找房子
- 如何实现photoshop里 滤镜 下 塑料包装 的功能?或者有谁知道它的算法?
- 一个小问题
- 很有意思的问题,我不会解决阿(问题很详细)
- 表格显示问题?
- 一个问题我不明白,请大家帮忙解答!
- 我想程序运行之前,显示一个登录窗口,可是出错,怎么回事呢?
- 来来来,大家透露以下自己的情况
- 一个很基础的问题,那就是用什么控件可以装载image控件,并且image的宽度大于容器宽度时,这个控件会产生滚动条呢?
- 如何关闭pagecontral中的tabsheet
服务器组件与客户组件的端口相同(Port:96224)服务器程序:
Client1.Host:=EditServer.Text;
Server1.Active:=True;
Client1.Active:=True;客户程序:
WeightClient1.Host:=EditServer.Text;
WeightClient1.Active:=True;服务器发数据:
Client1.SendEvent(mydata);
//因这两个组件是我改写的,其实此处是调用了TCustomSocket.Socket.SendText(tmpStr)
服务器接收到数据便转发(写在组件代码中了,表面上看不到)。内部代码是
在其OnClientRead中做以下事情:
for idx:=1 to self.Socket.ActiveConnections do
begin
try
self.Socket.Connections[idx-1].SendText(myPStr^); //发送最后一个EndFlag前的数据。
except
end;
end;
delete(myPStr^,1,EndLocation); 以上代码因是从我的程序中抄下来,所以比较乱,其实就是TCustomServerSocket.Socket.Connections[idx-1].SendText而已。