用网卡传送,tcp/ip协议。多谢!

解决方案 »

  1.   

    抄自D6 Demosunit main;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls;type
      TChatForm = class(TForm)
        MainMenu1: TMainMenu;
        File1: TMenuItem;
        Exit1: TMenuItem;
        FileConnectItem: TMenuItem;
        FileListenItem: TMenuItem;
        StatusBar1: TStatusBar;
        Bevel1: TBevel;
        Panel1: TPanel;
        Memo1: TMemo;
        Memo2: TMemo;
        N1: TMenuItem;
        SpeedButton1: TSpeedButton;
        Disconnect1: TMenuItem;
        ServerSocket: TServerSocket;
        ClientSocket: TClientSocket;
        Button1: TButton;
        procedure FileListenItemClick(Sender: TObject);
        procedure FileConnectItemClick(Sender: TObject);
        procedure Exit1Click(Sender: TObject);
        procedure Memo1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure FormCreate(Sender: TObject);
        procedure ServerSocketError(Sender: TObject; Number: Smallint;
          var Description: string; Scode: Integer; const Source,
          HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool);
        procedure Disconnect1Click(Sender: TObject);
        procedure ClientSocketConnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
        procedure ServerSocketClientRead(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ServerSocketAccept(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ServerSocketClientConnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ClientSocketDisconnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
          ErrorEvent: TErrorEvent; var ErrorCode: Integer);
        procedure ServerSocketClientDisconnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure Button1Click(Sender: TObject);
      protected
        IsServer: Boolean;
      end;var
      ChatForm: TChatForm;
      Server: String;implementation{$R *.dfm}procedure TChatForm.FileListenItemClick(Sender: TObject);
    begin
      FileListenItem.Checked := not FileListenItem.Checked;
      if FileListenItem.Checked then
      begin
        ClientSocket.Active := False;
        ServerSocket.Active := True;
        Statusbar1.Panels[0].Text := 'Listening...';
      end
      else
      begin
        if ServerSocket.Active then
          ServerSocket.Active := False;
        Statusbar1.Panels[0].Text := '';
      end;
    end;procedure TChatForm.FileConnectItemClick(Sender: TObject);
    begin
      if ClientSocket.Active then ClientSocket.Active := False;
      if InputQuery('Computer to connect to', 'Address Name:', Server) then
        if Length(Server) > 0 then
          with ClientSocket do
          begin
            Host := Server;
            Active := True;
            FileListenItem.Checked := False;
          end;
    end;procedure TChatForm.Exit1Click(Sender: TObject);
    begin
      ServerSocket.Close;
      ClientSocket.Close;
      Close;
    end;procedure TChatForm.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 TChatForm.FormCreate(Sender: TObject);
    begin
      FileListenItemClick(nil);
    end;procedure TChatForm.ServerSocketError(Sender: TObject; Number: Smallint;
      var Description: string; Scode: Integer; const Source, HelpFile: string;
      HelpContext: Integer; var CancelDisplay: Wordbool);
    begin
      ShowMessage(Description);
    end;procedure TChatForm.Disconnect1Click(Sender: TObject);
    begin
      ClientSocket.Active := False;
      ServerSocket.Active := True;
      Statusbar1.Panels[0].Text := 'Listening...';
    end;procedure TChatForm.ClientSocketConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost;
    end;procedure TChatForm.ClientSocketRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Memo2.Lines.Add(Socket.ReceiveText);
    end;procedure TChatForm.ServerSocketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Memo2.Lines.Add(Socket.ReceiveText);
    end;procedure TChatForm.ServerSocketAccept(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      IsServer := True;
      Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress;
    end;procedure TChatForm.ServerSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Memo2.Lines.Clear;
      Memo2.Lines.Add(inttostr(Socket.SocketHandle));
    end;procedure TChatForm.ClientSocketDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      FileListenItemClick(nil);
    end;procedure TChatForm.ClientSocketError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
      Memo2.Lines.Add('Error connecting to : ' + Server);
      ErrorCode := 0;
    end;procedure TChatForm.ServerSocketClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      Statusbar1.Panels[0].Text := 'Listening...';
    end;procedure TChatForm.Button1Click(Sender: TObject);
    begin
      Memo2.Lines.Add('Port= ' + IntToStr(ServerSocket.Port));
    end;end.
      

  2.   

    socket为何物?诸位大侠是如何学习的?