读书人

delphi代码socket解决思路

发布时间: 2013-08-24 13:17:55 作者: rapoo

delphi代码,socket
这是我在网上找的资料 然后弄的完整代码 编译出错,那位好心大神帮忙解决,是要做socket通信,我是delphi菜鸟,刚接触,但是老大给了这项目没办法
unit untChat;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp, Menus, ToolWin, ComCtrls, ExtCtrls, Buttons;

type
TfrmChat = class(TForm)
MainMenu1: TMainMenu;
ListenItem: TMenuItem;
ConnectItem: TMenuItem;
Disconnect: TMenuItem;
Exit: TMenuItem;
serverSocket: TServerSocket;
ClientSocket: TClientSocket;
Memo1: TMemo;
Memo2: TMemo;
procedure ListenItemClick(Sender: TObject);
procedure ConnectItemClick(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure serverSocketAccept(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure serverSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure serverSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure DisconnectClick(Sender: TObject);
procedure ExitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmChat: TfrmChat;

implementation

{$R *.dfm}

procedure TfrmChat.ListenItemClick(Sender: TObject);
begin
ListenItem.Checked := not ListenItem.Checked;
if ListenItem.Checked then
begin
ClientSocket.Active := False;
ServerSocket.Active := True;
end
else
begin


if ServerSocket.Active then
ServerSocket.Active := False;
end;
end;

procedure TfrmChat.ConnectItemClick(Sender: TObject);
begin
if ClientSocket.Active then ClientSocket.Active := False;
if InputQuery('Computer to connect to',' Address Name:', Server) then

if Length(Server) $#@62; 0 then
with ClientSocket do
begin
Host := Server;
Active := True;
ListenItem.Checked := False;
end;

end;

procedure TfrmChat.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_Return then
if IsServer then
ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1])
else
ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
end;

procedure TfrmChat.serverSocketAccept(Sender: TObject;
Socket: TCustomWinSocket);
begin
IsServer := True;
end;

procedure TfrmChat.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;

procedure TfrmChat.serverSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Add(Socket.ReceiveText);
end;

procedure TfrmChat.serverSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo2.Lines.Clear;
end;

procedure TfrmChat.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ListenItemClick(nil);
end;

procedure TfrmChat.DisconnectClick(Sender: TObject);
begin
ClientSocket.Active := False;
ServerSocket.Active := True;
end;

procedure TfrmChat.ExitClick(Sender: TObject);
begin
ServerSocket.Close;
ClientSocket.Close;
Close;
end;

end.
Delphi socket


[解决办法]
可以参考对比下上面的。
[解决办法]
if Length(Server) $#@62; 0 语法不通…… 你是要表达什么意思?
Server和 Isserver 这两个变量没有定义。

读书人网 >.NET

热点推荐