我现在在做一个故障处理反馈的系统遇到了一个问题,就是怎么样可以实现网络里面2台电脑通过IP地址进行消息互发?前台用户发了一个故障信息过来我要在后台马上弹出提示框,如果后台不应答的话就要不停的发出提示信息。请问这个用DELPHI怎么实现?谢谢!请大家帮帮忙!分数不够可以再加!

解决方案 »

  1.   

    用ServerSocket ClientSocket 来编程,具体的程序例子,网上很多。。
      

  2.   

    最好的例子是Delphi 自带的 \Demos\Internet\Chat 。看看就知道如何做了。。
      

  3.   

    局域网内直接使用信使服务就可以了
    net send remotecomputer xxxx
    remotecomputer 远程机
    xxxx 要发送的信息
      

  4.   

    怎么不详细了呢。。 
      \Demos\Internet\Chat 看看啊
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Menus, StdCtrls, ScktComp, ExtCtrls, ComCtrls;type
      TForm1 = class(TForm)
        ClientSocket1: TClientSocket;
        ServerSocket1: TServerSocket;
        MainMenu1: TMainMenu;
        File1: TMenuItem;
        listen1: TMenuItem;
        connect1: TMenuItem;
        StatusBar1: TStatusBar;
        Memo2: TMemo;
        Memo1: TMemo;
        Label1: TLabel;
        Label2: TLabel;
        Button1: TButton;
        Button2: TButton;
        NonConnect1: TMenuItem;
        procedure FormCreate(Sender: TObject);
        procedure listen1Click(Sender: TObject);
        procedure connect1Click(Sender: TObject);
        procedure ClientSocket1Connect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ServerSocket1Accept(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
        procedure ServerSocket1ClientRead(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
          ErrorEvent: TErrorEvent; var ErrorCode: Integer);
        procedure Memo1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure Button1Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure ServerSocket1ClientError(Sender: TObject;
          Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
          var ErrorCode: Integer);
        procedure ClientSocket1Disconnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure ServerSocket1ClientDisconnect(Sender: TObject;
          Socket: TCustomWinSocket);
        procedure Button2Click(Sender: TObject);
        procedure NonConnect1Click(Sender: TObject);  private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      server:string;
      isserver:boolean;
      Client_Flag : Boolean = False;
      Server_Flag : Boolean = False;
    implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
        listen1click(nil);
    end;procedure TForm1.listen1Click(Sender: TObject);
    begin
      memo1.Lines.Clear;
      memo2.Lines.Clear;
      listen1.Checked:=not listen1.Checked;
      if listen1.Checked then
      begin
        clientsocket1.Active:=false;
        serversocket1.Active:=true;
        statusbar1.Panels[0].Text:='listening......';
      end
      else
      begin
        if serversocket1.Active then
          serversocket1.Active:=false;
          clientsocket1.Active:=true;
          statusbar1.Panels[0].Text:='';
      end;
    end;procedure TForm1.connect1Click(Sender: TObject);
    begin
      if clientsocket1.Active then
        clientsocket1.Active:=false;  server := '192.168.1.';
      if inputquery('computer to connect to ','address name:',server) then
        if length(server)>0 then
          with clientsocket1 do
          begin
            Address:=server;
            try
              active:=true;
            except
            end;
          end;
    end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
         statusbar1.Panels[0].Text:='connected to : '+socket.RemoteHost;
         Client_Flag := true;
    end;procedure TForm1.ServerSocket1Accept(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
        isserver:=true;
        statusbar1.Panels[0].Text:='connected to : '+socket.RemoteAddress;
        Server_Flag := true;
    end;procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
        memo2.Lines.Add(socket.receivetext)
    end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
        memo2.Lines.Add(socket.ReceiveText);
    end;procedure TForm1.ClientSocket1Error(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
      memo2.Lines.Add('error connecting  to: '+server);
      errorcode:=0;
    end;procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=VK_return then
      begin
        if Server_Flag then
          serversocket1.socket.connections[0].sendtext(memo1.lines[memo1.lines.count-1])
        else
          ClientSocket1.Socket.SendText(memo1.lines[memo1.lines.count-1]);
        end;
      end;procedure TForm1.Button1Click(Sender: TObject);
    begin
        Form1.connect1Click(Sender);
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
        ClientSocket1.Active := False;
        ServerSocket1.Active := False;
    end;procedure TForm1.ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
        ErrorCode := 0;
    end;procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
        Form1.StatusBar1.Panels[0].Text := '断开';
    end;procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
        Form1.StatusBar1.Panels[0].Text := '断开';
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        if Client_Flag then
           ClientSocket1.Active := False;
        if Server_Flag then
           serversocket1.socket.connections[0].Close;
    end;procedure TForm1.NonConnect1Click(Sender: TObject);
    begin
        Form1.Button2Click(Sender);
    end;end.
      

  6.   

    在Form 上放一个ServerSocket 和一个ClientSocket 设置两个控件的端口,设置ClientSocket的Address或者Host,将两个控件的Active 设置为True;
    当ClientSocket发送数据的时候,用SendText(msg:sting);serverSocket 的 OnClientRead()事件接受到CLientSocket 发送的数据时,判断数据的有效性,即可弹出窗口。