呵呵 大家看到答案可能会失望 很简单(我把以前的程序贴出来给大家看看)
使用 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;