首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi代码,socket解决思路

2013-08-24 
delphi代码,socket这是我在网上找的资料 然后弄的完整代码 编译出错,那位好心大神帮忙解决,是要做socket通

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 这两个变量没有定义。

热点排行