TCP port map 是搞好了,但是问题来了。(100分)

  • 主题发起人 主题发起人 ihweb
  • 开始时间 开始时间
I

ihweb

Unregistered / Unconfirmed
GUEST, unregistred user!
好象对于UDP就不行的。例子:
sz.tencent.com:8000 ->mapport-> 192.168.0.2:8888
以此方法来实现对QQ的转换。测试用,不行,该如何编呢??
 
什么意思?是将发到192.168.0.2:8888的数据转到sz.tencent.com:8000去?
如果是的话,好像极简单。。(做过)
 
xiao_min,是这个意思啊。但是不是TCP 转啊,而是UDP 转啊,我试过不行啊。
 
我最先做的时候就是用的UDP呀,后来没用直接转了,我把它改成了SOCK5代理
你有什么具体问题?
 
我想UDP直接转啊。

你能把你的源程序打包寄给我吗??hhd@kingisme.com
 
一个简单的例子,把QQ的服务器地址设为自己的IP,端口为程序中UDP的本地端口
procedure TForm1.udpDataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String; Port: Integer);
var
buf:array of char;
Stream:TMemoryStream;
begin
setlength(buf,NumberBytes);
udp.ReadBuffer(buf[0],NumberBytes);
log.Lines.add(fromip+':'+inttostr(port));
if fromip='192.168.1.2' then
begin
udp.RemoteHost:='sz.tencent.com';
udp.RemotePort:=8000;
Stream:=TMemoryStream.Create;
Stream.Write(buf[0],numberbytes);
Stream.Seek(soFromBeginning,0);
udp.SendStream(Stream);
Stream.Free;
end
else
begin
udp.RemoteHost:='192.168.1.2';
udp.RemotePort:=4000;
Stream:=TMemoryStream.Create;
Stream.Write(buf[0],numberbytes);
Stream.Seek(soFromBeginning,0);
udp.SendStream(Stream);
Stream.Free;
end;
end;

不知道你要的是不是这样的。。。
 
xiao_min ,你好,我按照你的代码自己做了一个,好象不行啊!根本就没有触发udpDataReceived事件。
能打包寄过来吗??hhd@kingisme.com 分数全给你。
 
代码在家里。。。
而且上面的就是全部了呀。。。
那个UDP的设置:
本地端口8888
将QQ的服务器IP设为本机IP,端口为8888
这样就可以了。。
 
xiao_min 你好,问题我自己已经解决了,分数先给你吧。但是还有一点点小小的BUG。
 
我TEST过了,本地端口除了8000 外,其他都会出现问题。算了,我还是自己找办法解决问题吧。谢谢你了。
 
后退
顶部