请救我啊,TNMUDP的问题?不断加分中。(没人能回答吗??现在还没有人回答)。。。(先给200分) (200分)

G

gydsj

Unregistered / Unconfirmed
GUEST, unregistred user!
本人做了一个点对点的程序,服务器端我已放到互联网上了,服务器端程序能收到客户端
的消息,但客户端之间的通信不能收到消息??它们的IP地址我都设成是上网的动态IP。
如果我设的是本地IP的话客户端是可以互相通信的,不知是为什么,还请大家帮我。分数
不够可另起帖子送分。
 
[:(]没有人能回答我的问题吗????
 
客户端之间?什么意思?
TNMUDP用动态IP也是可以的。
检查防火墙设置。
(我用TNMUDP试了,利用互联网上通信可以实现)
 
将客户端程序的RemoteHost设为上网的IP,不通过服务器进行通信。
 
也可以啊,我就是这样做的。能否提供你的IP及port,我试着发一个流过去。
 
等我写一个程序。
 
客户端通信用服务端中转。
如果客户端通过proxy则不好直接通信。
 
你写一个字符串过来。我的IP是61.189.132.95,端口是6767
 
to xkliu
我想做点对点的。
 
发出了.
 
我的IP是218.10.112.16 port:3999 使用SendBuffer
 
to netameng
我没有收到。
 
to netameng
我使用的是SendStream
 
你给我发一个吧,IP:218.8.43.206 Port:3999 用Buffer方式
 
to netameng
我要重新写程序。等。
 
to netameng
你把你的程序贴上来,我拷下来快点。
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, NMUDP;

type
TForm1 = class(TForm)
NMUDP1: TNMUDP;
Edit1: TEdit;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Txt:pchar;
begin
if Edit1.Text = '' then
exit;
GetMem(Txt,Length(Edit1.Text)+1);
ZeroMemory(Txt,Length(Edit1.Text)+1);
Txt:=Pchar(Edit1.Text);
NMUDP1.RemoteHost := '61.189.132.95';
NMUDP1.RemotePort := 6767;
NMUDP1.SendBuffer(Txt^,Length(Edit1.Text)+1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := '';
NmUDP1.ReportLevel := Status_Basic;
end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
Txt:pchar;
Count:Integer;
begin
GetMem(Txt,NumberBytes+1);
ZeroMemory(Txt,NumberBytes+1);
NMUDP1.ReadBuffer(Txt^,Count);
Memo1.Lines.Add(Txt);
end;

end.
 
我发了。
 
重发一下,我刚才中断了一下
 
顶部