求助!一个小问题,请大家帮忙谢谢!

lt213 2002-11-15 09:02:17
我现在在做一个故障处理反馈的系统遇到了一个问题,就是怎么样可以实现网络里面2台电脑通过IP地址进行消息互发?前台用户发了一个故障信息过来我要在后台马上弹出提示框,如果后台不应答的话就要不停的发出提示信息。请问这个用DELPHI怎么实现?谢谢!请大家帮帮忙!分数不够可以再加!
...全文
21 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuyfufeng 2002-11-22
  • 打赏
  • 举报
回复
在Form 上放一个ServerSocket 和一个ClientSocket 设置两个控件的端口,设置ClientSocket的Address或者Host,将两个控件的Active 设置为True;
当ClientSocket发送数据的时候,用SendText(msg:sting);serverSocket 的 OnClientRead()事件接受到CLientSocket 发送的数据时,判断数据的有效性,即可弹出窗口。
sowine 2002-11-18
  • 打赏
  • 举报
回复

去精华区找一找,或者有.
flinming 2002-11-18
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
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.




zfmich 2002-11-15
  • 打赏
  • 举报
回复
就是用ServerSocket ClientSocket
lt213 2002-11-15
  • 打赏
  • 举报
回复
还有更具体点的吗?谢谢!
xiamang 2002-11-15
  • 打赏
  • 举报
回复
最好的例子是Delphi 自带的 \Demos\Internet\Chat 。看看就知道如何做了。。
xiamang 2002-11-15
  • 打赏
  • 举报
回复
用ServerSocket ClientSocket 来编程,具体的程序例子,网上很多。。
xiamang 2002-11-15
  • 打赏
  • 举报
回复
怎么不详细了呢。。 
  \Demos\Internet\Chat 看看啊。。。
lt213 2002-11-15
  • 打赏
  • 举报
回复
请在详细点好不好咯!谢谢!
naughtyboy 2002-11-15
  • 打赏
  • 举报
回复
局域网内直接使用信使服务就可以了
net send remotecomputer xxxx
remotecomputer 远程机
xxxx 要发送的信息

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧