delphi - Client's udpserver don't response -


my server form has stringgride accept 4 tcp connected user purpose, put udpclient in server , udpserver in clients

in tcp-onconnect event in server form :

   //server side has udp client  procedure tform1.idtcpserver1connect(athread: tidpeerthread); begin        //when fifth user want connect tcpserver        //server first ensure @ list 1 of 4 connected user in grid has disconnected       //by send udp broadcast 4 user       //but in timeout none of these users not respond , although still connected        idudpclient1.broadcast('ip', 1718);       i:=1 4       begin        iplist.add(idudpclient1.receivestring(200););       end; end;   //client side has udp server procedure tform1.idudpserver1udpread(sender: tobject; adata: tstream;     abinding: tidsockethandle); begin  //  ip:=getipaddress();  abinding.sendto(abinding.peerip, abinding.peerport, ip[1], length(ip)); end; 

i run ethereal in client check network , saw udp massage send server client client not respond.

please me what's code problems

your tidudpserver.onudpread event handler not have correct signature, not close. tidudpserver not use tidpeerthread @ all, tidtcpserver does. need more instead:

server:

procedure tform1.idtcpserver1connect(athread: tidpeerthread); begin   //when fifth user want connect tcpserver    //server first ensure @ list 1 of 4 connected user in grid has disconnected   //by send udp broadcast 4 user   //but in timeout none of these users not respond , although still connected    iplist.clear;   idudpserver1.broadcast('ip', 1718);   sleep(1000); end;  procedure tform1.idudpserver1udpread(sender: tobject; adata: tstream; abinding: tidsockethandle); var   s: string; begin   if adata.size > 0   begin     setlength(s, adata.size);     adata.readbuffer(s[1], adata.size);     iplist.add(s);   end; end; 

client:

procedure tform1.idudpserver1udpread(sender: tobject; adata: tstream; abinding: tidsockethandle); var   s: string; begin   if adata.size > 0   begin     setlength(s, adata.size);     adata.readbuffer(s[1], adata.size);   end;   if s = 'ip'   begin     s := abinding.ip;     if (s = '') or (s = '0.0.0.0')       s := gstack.localaddress;     abinding.sendto(abinding.peerip, abinding.peerport, s[1], length(s));   end; end; 

Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -