请问我照书编写了一个两台机器tcp聊天工具,其中有问题请教!谢谢! 程序没有提示错误,但是有四个输入选项。1.远程服务器的ip,这个是要联系的对方的 ip,2.昵称,是自己的称呼,3.服务器端口,(不知道如何获得)4.本地端口(不知道如何获得)。请教高手指点!(控件用的是idtcpclint,idtcpserver) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我没用过你那控件,不知道是什么控件来得,我用的是TNMUDP给你这个例子:unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ShellAPI, StdCtrls,Dialogs, ScktComp, NMUDP; const MY_MESSAGE = WM_USER + 100;type TForm1 = class(TForm) Button1: TButton; NMUDP1: TNMUDP; Edit2: TEdit; Edit3: TEdit; StaticText1: TStaticText; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer); private { Private declarations } procedure OnMinimize(var Message:TMessage);Message WM_SYSCOMMAND; procedure OnIconNotify(var Message: TMessage);message MY_MESSAGE; public { Public declarations } end;var Form1: TForm1; i:integer;implementation{$R *.DFM}procedure TForm1.OnIconNotify(var Message: TMessage);begin if Message.LParam=WM_LBUTTONDOWN then form1.show;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);var nid:NotifyIconData;begin nid.cbSize:=sizeof(nid); nid.uid:=1; nid.Wnd:=handle; Shell_NotifyIcon(NIM_DELETE,@nid); action:=cafree;end;procedure TForm1.OnMinimize(var Message: TMessage);var nid: TNotifyIconData;begin if Message.WParam=SC_MINIMIZE then form1.Hide else inherited;end;procedure TForm1.FormCreate(Sender: TObject);var nid: TNotifyIconData;begin nid.cbSize := sizeof(nid); nid.Wnd := Handle; nid.uID := 1; nid.hIcon := Application.Icon.Handle; nid.uCallbackMessage := MY_MESSAGE; nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; if not Shell_NotifyIcon(NIM_ADD, @nid) then begin ShowMessage('Failed!'); Application.Terminate; end;end;procedure TForm1.FormShow(Sender: TObject);begin ShowWindow(application.handle,SW_HIDE);end;procedure TForm1.Button1Click(Sender: TObject);var strarr:array[0..1000] of char; Str:string; len:integer;begin Str:=Edit3.Text; if length(str)=0 then len:=1 else len:=length(str); StrpCopy(strarr,Str); NMUDP1.RemoteHost:=Edit2.Text; NMUDP1.SendBuffer(strarr,len);end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer);var str:array[0..1000] of char;begin str:=''; form1.show; NMUDP1.ReadBuffer(str,NumberBytes); StaticText1.Caption:=str;end;end. 我在qq上看到对方的ip还有端口号是4000.那么我在程序里设置的端口号也是4000.我和朋友调试的时候都开着qq,我不能连接对方,但对方可以连接我,并且可以发信息,但是他关掉qq,以后双方都可以通信,一切正常,为什么? 串口多线程 知道用户名和密码通过写代码登陆服务器如何实现? 东方国软公司怎么样? 关于C与Delphi的问题,UP有分! 高分求助:怎么把grid中当前查询出的结果导入到excel中。。 谁有图像颜色变化或对比度的源码??? 请教关于DisplayFormat的显示格式的问题 接口与类! 窗体的状态条StatusBar中的项目如何使其可以右对齐? 跪求深圳福田区delphi高手,诚心登门拜师学艺 一个小问题求助 以后的路还是得走下去
给你这个例子:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
ShellAPI, StdCtrls,Dialogs, ScktComp, NMUDP; const MY_MESSAGE = WM_USER + 100;type
TForm1 = class(TForm)
Button1: TButton;
NMUDP1: TNMUDP;
Edit2: TEdit;
Edit3: TEdit;
StaticText1: TStaticText;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
private
{ Private declarations }
procedure OnMinimize(var Message:TMessage);Message WM_SYSCOMMAND;
procedure OnIconNotify(var Message: TMessage);message MY_MESSAGE;
public
{ Public declarations }
end;var
Form1: TForm1;
i:integer;implementation{$R *.DFM}
procedure TForm1.OnIconNotify(var Message: TMessage);
begin
if Message.LParam=WM_LBUTTONDOWN then form1.show;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
nid:NotifyIconData;
begin
nid.cbSize:=sizeof(nid);
nid.uid:=1;
nid.Wnd:=handle;
Shell_NotifyIcon(NIM_DELETE,@nid);
action:=cafree;
end;procedure TForm1.OnMinimize(var Message: TMessage);
var
nid: TNotifyIconData;
begin
if Message.WParam=SC_MINIMIZE then form1.Hide else inherited;
end;procedure TForm1.FormCreate(Sender: TObject);
var
nid: TNotifyIconData;
begin
nid.cbSize := sizeof(nid);
nid.Wnd := Handle;
nid.uID := 1;
nid.hIcon := Application.Icon.Handle;
nid.uCallbackMessage := MY_MESSAGE;
nid.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
if not Shell_NotifyIcon(NIM_ADD, @nid) then
begin
ShowMessage('Failed!');
Application.Terminate;
end;
end;procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(application.handle,SW_HIDE);
end;procedure TForm1.Button1Click(Sender: TObject);
var
strarr:array[0..1000] of char;
Str:string;
len:integer;
begin
Str:=Edit3.Text;
if length(str)=0 then len:=1 else len:=length(str);
StrpCopy(strarr,Str);
NMUDP1.RemoteHost:=Edit2.Text;
NMUDP1.SendBuffer(strarr,len);
end;procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
str:array[0..1000] of char;
begin
str:='';
form1.show;
NMUDP1.ReadBuffer(str,NumberBytes);
StaticText1.Caption:=str;
end;end.