r: TObjectvar Action: TCloseActionbegin ServerSocket.Close end//当客户端正在与服务器端连接时procedure TfrmServerMain.ServerSocketGetSocketSender: TObjectSocket: Integer var ClientSocket: TServerClientWinSocketbegin StatusBar.Panels0.Text :客户端正在连接...end//客户端发生错误procedure TfrmServerMain.ServerSocketClientErrorSender: TObjectSocket: TCustomWinSocket ErrorEvent: TErrorEventvar ErrorCode: Integerbegin StatusBar.Panels0.Text :客户端Socket.RemoteHost 发生错误! ErrorCode : 0endend.客户端代码unit uClientMaininterfaceusesWindows Messages SysUtils Classes Graphics Controls Forms DialogsScktComp ComCtrls ToolWin ExtCtrls StdCtrls Buttonsconst SocketHost 172.16.1.6 //服务器端地址type TfrmClientMain classTForm ControlBar1: TControlBar ToolBar1: TToolBar tbConnected: TToolButton tbSend: TToolButton tbClose: TToolButton tbDisconnected: TToolButton ClientSocket: TClientSocket Edit1: TEdit Memo1: TMemo StatusBar: TStatusBar btnSend: TBitBtn procedure tbConnectedClickSender: TObject procedure tbDisconnectedClickSender: TObject procedure ClientSocketReadSender: TObject Socket: TCustomWinSocket procedure tbSendClickSender: TObject procedure tbCloseClickSender: TObject procedure FormShowSender: TObject procedure ClientSocketConnectSender: TObject Socket: TCustomWinSocket procedure ClientSocketConnectingSender: TObject Socket: TCustomWinSocket procedure ClientSocketDisconnectSender: TObject Socket: TCustomWinSocket procedure FormCloseSender: TObject var Action: TCloseAction procedure ClientSocketErrorSender: TObject Socket: TCustomWinSocket ErrorEvent: TErrorEvent var ErrorCode: Integer private Private declarations public Public declarations end var frmClientMain: TfrmClientMain implementation R .DFM //打开套接字连接 procedure TfrmClientMain.tbConnectedClickSender: TObject begin ClientSocket.Open end //关闭套接字连接 procedure TfrmClientMain.tbDisconnectedClickSender: TObject begin ClientSocket.Close end //接受服务器端的回复 procedure TfrmClientMain.ClientSocketReadSender: TObjectSocket: TCustomWinSocket begin Memo1.Lines.AddSocket.ReceiveText end //发送信息到服务器端 procedure TfrmClientMain.tbSendClickSender: TObject begin ClientSocket.Socket.SendTextEdit1.Text end procedure TfrmClientMain.tbCloseClickSender: TObject begin Close end //设置要连接的服务器端地址 procedure TfrmClientMain.FormShowSender: TObject begin ClientSocket.Host : SocketHost end //已经连接到服务器端 procedure TfrmClientMain.ClientSocketConnectSender: TObjectSocket: TCustomWinSocket begin tbSend.Enabled : True tbDisconnected.Enabled :True btnSend.Enabled : True StatusBar.Panels0.Text : 已经连接到 Socket.RemoteHost end //正在连接到服务器端 procedure TfrmClientMain.ClientSocketConnectingSender: TObjectSocket: TCustomWinSocket begin StatusBar.Panels0.Text : 正在连接到服务器... end //当断开与服务器端的连接时发生 procedure TfrmClientMain.ClientSocketDisconnectSender: TObjectSocket: TCustomWinSocket begin tbSend.Enabled : False btnSend.Enabled : False tbDisconnected.Enabled : False StatusBar.Panels0.Text : 已经断开与 Socket.RemoteHost 的连接 end procedure TfrmClientMain.FormCloseSender: TObjectvar Action: TCloseAction begin ClientSocket.Close end //当与服务器端的连接发生错误时 procedure TfrmClientMain.ClientSocketErrorSender: TObjectSocket: TCustomWinSocket ErrorEvent: TErrorEventvar ErrorCode: Integer begin StatusBar.Panels0.Text : 与服务器端的连接发生错误 ErrorCode : 0 end end.Delphi 得到局域网内所有电脑的名称和 IP 地址unit Unit1interfaceusesWindows Messages SysUtils Variants Classes Graphics Controls FormsDialogs WinSock StdCtrlstypeTForm1 classTForm ListBox1: TListBox procedure FormCreateSender: TObjectprivate function GetServerListList: TStringList: Boolean function GetUsersconst GroupName: String List: TStringList: Boolean Private declarations public Public declarations endvarForm1: TForm1implementationR .dfmfunction TForm1.GetServerListList: TStringList: BooleantypeTNetResourceArray TNetResource //网络类型的数组varNetResource: TNetResourceBuf: PointerCount BufSize Res: DWORDlphEnum: THandlep: TNetResourceArrayi j: SmallIntNetworkTypeList: TListbeginResult : FalseNetworkTypeList : TList.CreateList.Clear//获取整个网络中的文件资源的句柄,lphEnum 为返回名柄Res : WNetOpenEnumRESOURCE_GLOBALNET RESOURCETYPE_DISK RESOURCEUSAGE_CONTAINER nil lphEnumif Res NO_ERROR then Exit //Raise ExceptionRes//执行失败//获取整个网络中的网络类型信息Count : FFFFFFFF //不限资源数目BufSize : 8192 //缓冲区大小设置为 8KGetMemBuf BufSize //申请内存,用于获取工作组信息Res : WNetEnumResourcelphEnum Count PointerBuf BufSizeif Res ERROR_NO_MORE_ITEMS //资源列举完毕 or Res NO_ERROR //执行失败 then ExitP : TNetResourceArrayBuffor I : 0 to Count - 1 do begin//记录各个网络类型的信息 NetworkTypeList.Addp IncPend //WNetCloseEnum 关闭一个列举句柄Res : WNetCloseEnumlphEnum //关闭一次列举if Res NO_ERROR then exitfor J : 0 to NetworkTypeList.Count - 1 do begin//列出各个网络类型中的所有工作组名称 //列出一个网络类型中的所有工作组名称 NetResource : TNetResourceNetworkTypeList.ItemsJ //网络类型信息//获取某个网络类型的文件资源的句柄,NetResource 为网络类型信息,lphEnum 为返回名柄 Res : WNetOpenEnumRESOURCE_GLOBALNET RESOURCETYPE_DISK RESOURCEUSAGE_CONTAINER NetResource lphEnum if Res NO_ERROR then break //执行失败 while true do begin//列举一个网络类型的所有工作组的信息 Count : FFFFFFFF //不限资源数目 BufSize : 8192 //缓冲区大小设置为 8K GetMemBuf BufSize //申请内存,用于获取工作组信息 //获取一个网络类型的文件资源信息, Res : WNetEnumResourcelphEnum Count PointerBuf BufSize if Res ERROR_NO_MORE_ITEMS //资源列举完毕 or Res NO_ERROR //执行失败 then Break P : TNetResourceArrayBuf for I : 0 to Count - 1 do begin//列举各个工作组的信息 List.AddStrPASP.lpRemoteName //取得一个工作组的名称 IncP end end Res : WNetCloseEnumlphEnum //关闭一次列举 if Res NO_ERROR then break //执行失败endResult : TrueFreeMemBufNetworkTypeList.Destroyendfunction TForm1.GetUse
上一篇:
留言板与公告板
下一篇:
月入5000,你有什么资格谈生活