请问在delphi中用Socket如何实现一台工作站同时连接多台服务器?

gdhwz 2006-04-30 12:08:37
我在一个局域网中,有多台服务器,用Socket如何实现一台工作站同时连接多台服务器?
...全文
563 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tinnerscppjava 2006-05-16
  • 打赏
  • 举报
回复
用线程,一个线程控制一个连接的通讯问题,我们公司就用这个,只是由于是商业代码,就不公布了,只是给你提个建议,呵呵
lzjian119 2006-05-16
  • 打赏
  • 举报
回复
多线程也好。不过想问你具体想做些什么。
gdhwz 2006-05-13
  • 打赏
  • 举报
回复
各位请帮忙看看上面的代码为什么编译出错?谢谢各位
gdhwz 2006-05-12
  • 打赏
  • 举报
回复
楼上:请问如何实现,我刚学的,不太懂,最好有代码,谢谢您
billwillman 2006-05-12
  • 打赏
  • 举报
回复
建议客户端采用异步I/O模型,服务器采用完成端口
gdhwz 2006-05-12
  • 打赏
  • 举报
回复
program Project1;

uses
Forms,
Classes,
Windows,
SysUtils,
ShlObj,
ActiveX,
Messages,
Controls,
Dialogs,
StdCtrls,
ExtCtrls,
Menus,
ComCtrls,
FileCtrl,
ShellAPI,
ComObj,
Registry,
Variants,IdBaseComponent, IdComponent, IdUDPBase,IdUDPClient,ScktComp;

{$R *.res}




procedure ClientSocketRead(Sender: TObject;Socket: TCustomWinSocket);
Var Str1 : String;
Begin
try
Str1 := Socket.ReceiveText;
except
end;
End;

procedure ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
// if ClientSocket.Active then MessageBox(0,'true','',MB_OK + MB_ICONWARNING)
// else MessageBox(0,'false','',MB_OK + MB_ICONWARNING);
end;

Function CheckComputer(Const CurrentIP : String) : Boolean;
Var
ClientSocket1: TClientSocket;
begin
ClientSocket1 := TClientSocket.Create(nil);
try
ClientSocket1.Active := False;
ClientSocket1.Address := CurrentIP;
ClientSocket1.Port := DefaultPortNum; //服务器端口
ClientSocket1.ClientType := ctNonBlocking;
ClientSocket1.OnRead := ClientSocketRead; //接收事件
//ClientSocket1.OnDisconnect := ClientSocketDisconnect;
ClientSocket1.Active := True;
//其他事件根据需要也要添加进来
finally
ClientSocket1.Free;
end;
End;





begin
Application.Initialize;
If CheckComputer('192.168.0.100') Then MessageBox(0,'ok','',MB_OK + MB_ICONWARNING);

end.
postren 2006-05-11
  • 打赏
  • 举报
回复
上面那段代码是没问题的,看你的代码是怎么写的?
贴出来看看
929 2006-05-11
  • 打赏
  • 举报
回复
查找CLIENTSOCKET的帮助信息,查看ONREAD事件的函数原型
pingzhifan 2006-05-11
  • 打赏
  • 举报
回复
想连接一个服务器的时候,就自动生成一个clientsocket控件,断开再释放这个控件就可以了,随你联几个服务器都是可能的啊
gdhwz 2006-05-10
  • 打赏
  • 举报
回复
我在program 中用您的代码,动态生成 Socket 控件,在“ClientSocket1.OnRead := ClientSocketRead; //接收事件”句编译出错,“[Error] aaa.dpr(233): Incompatible types: 'method pointer and regular procedure'”,请问有办法解决吗?我是刚学Delphi 的,请多指教!!!
postren 2006-05-05
  • 打赏
  • 举报
回复
procedure TForm1.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
//接收事件
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ClientSocket1: TClientSocket;
begin
ClientSocket1 := TClientSocket.Create(nil);
try
ClientSocket1.Address := '服务器地址';
ClientSocket1.Port := 1234; //服务器端口
ClientSocket1.OnRead := ClientSocketRead; //接收事件
//其他事件根据需要也要添加进来
finally
ClientSocket1.Free;
end;
end;
BennyMavis 2006-05-05
  • 打赏
  • 举报
回复
每個服務器使用不同的端口,然後在代碼裡作端口的連接。
2312 2006-04-30
  • 打赏
  • 举报
回复
关注一下
postren 2006-04-30
  • 打赏
  • 举报
回复
用多个ClientSocket控件分别连接
gdhwz 2006-04-30
  • 打赏
  • 举报
回复
ClientSocket控件可否由代码自动添加,能给我一段代码例子吗?谢谢

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧