假设在局域网环境,双机通信,主机A和客户端B,现在要求,首先启动主机A,然后启动B,在B中能检测A是否已经开启(不知是否是在应用程序中使用ping命令),如果A开启,则输入A的IP地址,然后请求链接,当主机A收到客户端B的链接请求时,能查看B来自何IP,然后点接收按钮建立连接,或者发条消息给B提示,然后断开与B的连接。
使用TClientSocket、TServerSocket。Delphi 6
求例子,客户端和服务器源代码发到信箱[email protected]。不要仅给一点提示性的东西,谢谢,望哪位好心人帮忙
使用TClientSocket、TServerSocket。Delphi 6
求例子,客户端和服务器源代码发到信箱[email protected]。不要仅给一点提示性的东西,谢谢,望哪位好心人帮忙
http://www.delphibox.com/downloads.asp?subcatalogid=106&pageid=2这里有一个聊天用的。你去看看:
http://www.delphibox.com/article.asp?articleid=91
delphibox注册不了啊
想知道连接的IP是否在某个范围(可存放在数据库一个表中)
就假设连接IP为192.168.0.10。192.168.0.99之间为合法IP,判断连接服务器的IP地址是否在此范围,如在则合法,否则断开其连接(最好是先发送一个提示信息过去再断开)
unit UChat;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, ScktComp, Menus;type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Listen1: TMenuItem;
Connect1: TMenuItem;
Close1: TMenuItem;
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
StatusBar1: TStatusBar;
Memo1: TMemo;
Memo2: TMemo;
Splitter1: TSplitter;
Disconnect1: TMenuItem;
procedure Listen1Click(Sender: TObject);
procedure Close1Click(Sender: TObject);
procedure Connect1Click(Sender: TObject);
procedure Disconnect1Click(Sender: TObject);
procedure Memo2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
bListen,IsServer:Boolean;
server:string;implementation{$R *.dfm}procedure TForm1.Listen1Click(Sender: TObject);
begin
bListen:=not bListen;
if bListen then
begin
ClientSocket1.Active:=false;
ServerSocket1.Active:=true;
statusbar1.Panels[0].Text:='Listen...';
end
else
begin
if ServerSocket1.Active then
ServerSocket1.Active:=false;
StatusBar1.Panels[0].Text:='';
end;
end;procedure TForm1.Close1Click(Sender: TObject);
begin
ServerSocket1.Close;
ClientSocket1.Close;
Close;
end;procedure TForm1.Connect1Click(Sender: TObject);
begin
if ClientSocket1.Active then
ClientSocket1.Active:=False;
if InputQuery('Connect Server','Server IP:',server) then
if Length(server)>0 then
begin
ClientSocket1.Host:=server;
ClientSocket1.Active:=true;
//bListen:=false;
end;
end;procedure TForm1.Disconnect1Click(Sender: TObject);
begin
//ClientSocket1.Active:=false;
//ServerSocket1.Active:=true;
//StatusBar1.Panels[0].Text:='Listen...';
ClientSocket1.Close;
Listen1Click(nil);
end;procedure TForm1.Memo2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_Return then
begin
if IsServer then
ServerSocket1.Socket.Connections[0].SendText(Memo2.Text)
else
ClientSocket1.Socket.SendText(Memo2.Text);
Memo2.Lines.Clear;
end;
end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar1.Panels[0].Text:='Connect to'+Socket.RemoteHost;
end;procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('');
Memo1.Lines.Add(Socket.ReceiveText);
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('');
Memo1.Lines.Add(Socket.ReceiveText);
end;procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
IsServer:=true;
StatusBar1.Panels[0].Text:='Connect to:'+Socket.RemoteAddress ;
end;procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Clear;
end;procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Listen1Click(nil);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Listen1Click(nil);
end;procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ServerSocket1.Active:=false;
bListen:=not bListen;
Listen1Click(nil);
end;end.
例如:
当192.168.0.12的IP连接到服务器,我直接发送一条回复信息给它“不满足权限”,然后断开与它的连接。
若干个IP来连接我的服务器,我让他们处于一个等待队列中(我同时保持10个连接),如旧连接断开,则替补进新的连接
请问这上面两个功能如何实现?