Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Разьясните вызов GetTcpTable...


Автор: Spawn 1.12.2002, 04:58
Я мучаюсь с импортом функции уже недели 2 наверно. Помогите, пожалуйста, хотябы разьяснить назначение строк кода, написанного на 'C', чтобы мне попробовать перевести на Delphi(я на 'С' не программировал еще):

//
// Get the table of TCP endpoints
//
dwSize = 0;
error = GetTcpTable( NULL, &dwSize, TRUE );
if( error != ERROR_INSUFFICIENT_BUFFER ) {

printf("Failed to snapshot TCP endpoints.\n");
PrintError( error );
return -1;
}
tcpTable = (PMIB_TCPTABLE) malloc( dwSize );
error = GetTcpTable( tcpTable, &dwSize, TRUE );
if( error ) {

printf("Failed to snapshot TCP endpoints.\n");
PrintError( error );
return -1;
}
//
// Dump the TCP table
//
for( i = 0; i < tcpTable->dwNumEntries; i++ ) {

if( flags & FLAG_ALL_ENDPOINTS ||
tcpTable->table[i].dwState == MIB_TCP_STATE_ESTAB ) {

sprintf( localaddr, "%s:%s",
GetIpHostName( flags, TRUE, tcpTable->table[i].dwLocalAddr, localname, HOSTNAMELEN),
GetPortName(  flags, tcpTable->table[i].dwLocalPort, "tcp", localport, PORTNAMELEN ));

sprintf( remoteaddr, "%s:%s",
GetIpHostName( flags, FALSE, tcpTable->table[i].dwRemoteAddr, remotename, HOSTNAMELEN),
tcpTable->table[i].dwRemoteAddr ?
GetPortName( flags, tcpTable->table[i].dwRemotePort, "tcp", remoteport, PORTNAMELEN ):
"0" );

printf("%4s\tState:   %s\n", "[TCP]",
TcpState[ tcpTable->table[i].dwState ] );
printf("       Local:   %s\n       Remote:  %s\n",
localaddr, remoteaddr );
}
}

Автор: Step 4.12.2002, 03:10
Цитата
GetTcpTable( NULL, &dwSize, TRUE );

Вообщето передать нулл в качесте буфера, это до п..ца глупа, где ты эту прогу вытащил.

Автор: Andy_user 5.12.2002, 00:33
To Step

Цитата  
GetTcpTable( NULL, &dwSize, TRUE );
Вообщето передать нулл в качесте буфера, это до п..ца глупа, где ты эту прогу вытащил.

To Step
Прежде, чем задавать покровительственные вопросы, попытайтесь понять,
что заранее неизвестно какого размера буфер понадобиться, и поэтому первый вызов функции GetTcpTable c NULL в качестве первого аргумента и служит для определения размера этого буфера.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)