网络高手请入 (100分)

  • 主题发起人 主题发起人 Tintin
  • 开始时间 开始时间
T

Tintin

Unregistered / Unconfirmed
GUEST, unregistred user!
在A进程中对一个端口建立了多个Socket
在B进程只能得到A进程的所在的IP地址和端口
如何得到A进程的连接数量。
提醒注意(A B 不是在一个进程中)
 
我想可能有API函数做到
netstat -a 命令就可以列出本机所有的端口和连接
再次提醒注意(A B 不是在一个进程中--两个应用程序,但A和B可以在一台机器中 )
 
帮你提前一次
 
to wjiachun
这个问题我解决啦 , 怎么把分收回呀
咱们平分掉如何? :)
 
解决了就贴出来大家看看啊!
 
是啊,如何解决的
 
是啊,贴出来大家看看嘛!
 
把你答案贴出来,我给你加上90分专家分
 
呵呵 大家看到答案可能会失望 很简单(我把以前的程序贴出来给大家看看)
使用 netstat -n 命令列出指定的Address和Port然后输出到文件中再读出来就可以了
治标的一种做法 :)

function TNetMonitor.GetClientNum: Integer;
var
AFileName: string;
AFile: TextFile;
sTemp: string;
begin
try
Result := 100000;
AFileName := GetCurrentDir()+'/Temp.txt';
if winexec(PChar('cmd /c "netstat -n | find /c "'+
FSock.Address+':'+
IntToStr(FSock.Port)+'" > "'+AFileName+'" "'), SW_HIDE) > 31 then
try
Sleep(500); // 等待生成文件
if FileExists(AFileName) then
begin
AssignFile(AFile, AFileName);
Reset(AFile);
ReadLn(AFile, sTemp);
CloseFile(AFile);
if Length(sTemp) > 0 then
Result := StrToInt(sTemp);
{$IFDEF _DEBUG}
WriteLogFile('DebugInfo -- ClientNum : '+sTemp);
{$ENDIF}
end;
finally
DeleteFile(PChar(AFileName));
end;
except
Result := 10;
end;
end;
 
BTW 有没有对各种编码(BASE64, UUCode, Quoted, 7bit, 8bit)特熟的大虾
和我联系(Tintin2000@263.net)一下或回复一下,谢谢 :)
 
如果是本机运行,是不是多了一个连接
 
多人接受答案了。
 
后退
顶部