如何从TSocket中获取端口号? ( 积分: 100 )

  • 主题发起人 主题发起人 暗夜中独舞
  • 开始时间 开始时间

暗夜中独舞

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了个拦截数据包的程序 拦截send和recv两个API
其中,函数的第一个参数是:s: TSocket
于是我:
var
RemoteAddr:TSockAddr;
RemoteAddrLen:Integer;
LocalAddr:TSockAddr;
LocalAddrLen:Integer;
begin
RemoteAddrLen:=Sizeof(RemoteAddr);
LocalAddrLen:=Sizeof(LocalAddr);
getpeername(s,RemoteAddr,RemoteAddrLen);
getsockname(s,LocalAddr, LocalAddrLen);
end;
然后我应该怎么根据RemoteAddr和LocalAddr取出端口号??
为什么RemoteAddr.sin_port和LocalAddr.sin_port取出来的是20480和65033?(我是拿打开网页所拦截的数据包做实验的,其中20480是固定不变的,而65033却是跳动的)
 
你拦截到得api,不是应该有参数的吗?
 
是有参数呀
s: TSocket就是第一个参数呀。。。。
function MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;
我想端口信息应该在s里面吧??
 
最好直接从连接那里拦截, hook到的情况下用getpeername不一定准确....
 
不明白。。。
我把拦截到的数据包全部显示出来了
但是却没有端口号的信息 。。。。
请指点
 
我看了下其他的软件 有很多可以实现封端口的
到底是怎么实现的呢??
请指点。。。。分不够可以再加。。。。
 
在xp/2k下,就算是访问同一个端口,忙时也要派生出许多临时没有被占用的连接(端口)!
用netstat -a 就明白了!呵呵!
 
哦哈哈 我知道啦
原来要用ntohs这个函数
 
多人接受答案了。
 
后退
顶部