讨条思路:服务端/客户端程序,200大洋相赠(200分)

H

Hunting

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi做个局域网内程序,一个服务端和若干个客户端。
功能:服务端收集客户端发送过来的信息,并于反馈。
请问如何实现?Socket吗?如何识别各客户端用户?
 
用数据库做,各个客户机有它自己的编号,就可根据编号判断了。
 
用Socket应该可以实现吧
Socket的Connections属性里记录有每个连接的IP
可以通过IP来识别客户端

 
兼而有之!
UDP 损耗小
TCP 可靠性高!
 
1、用tcp socket好了,可靠性高!
2、如果server和client的交互频繁,建议采用常连接方式,这样效率较高
3、client端连接server时候,发送对应的loginname和password过来,有server端验证。
4、可以在onclientread事件里简单地对每个socket进行识别(就是过程的socket参数),
或者用ip和sockethandle来登记每个连接。
5、如果是处理更复杂的的事务,最好采用线程或api编程方式,这样稳定,性能也好。
6、注意处理onerror事件。
 
对数据的可靠性没有苛刻要求的话,UDP方式更好
 
c/s类型,不用socket也可以实现,先获取本机器的ip,发送到server端,
可以写一个函数,getip可以实现的。我做过。
 
用SOCKET很容易实现,
每次连接时握手确实就可以了.
 
你的服务器可可以象整个局域网发广播.客户端收听
如果在同一网段可以看看下面的代码!
服务器:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
NMUDP1.SendBuffer(xkeyword,6);
end;
服务器还可以将自己的IP广播出去
要代码我可以给你
客户端可以如下
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
begin

flagip:=FromIp;
NMUDP1.ReadBuffer(xkeyword,numberbytes);//监听

end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
SocketConnection1.Address:=flagip;
if(xkeyword='starip')then
begin
SocketConnection1.Connected:=true;
flagstar:=1;
Timer2.Enabled:=false;
timer3.Enabled:=true;
//判断是否连接'连接成功'
end;
end;

 
用ASTA,轻松搞定.
 
ASTA为何物,请指教。
 
还是UDP比较方便。
 
多人接受答案了。
 
顶部