我能够用程序来扫描出本机打开的TCP端口。请问如何编写代码关闭其它程序打开的TCP端口??
谢谢!
谢谢!
解决方案 »
- debug下无问题,release下崩溃
- 关于unsigned int, unsigned short, unsigned char在不同编译器内的互转换问题
- MFC 创建单文档,窗口如何禁止调整大小
- 创建一个非模式对话框后,怎样才能禁止鼠标对其的拖动?
- 请帮我列一下CListView的所有Style或ExtendedStyle,如LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT等,谢谢
- MFC ADO 问题 m_pCommand->Execute(NULL,NULL, adCmdText); 读数据库数据 为什么不是按照顺序读?
- 急~~~如何将WORD文档转化成BMP位图形式
- 谁有能编译通过的XTreme9.61WorkSpace文件?
- windows程序设计的问题??
- VC环境下图形图像打印问题,在线等!
- 我的 New ATL Object 的菜单哪里去了?
- 可以推荐一本书吗?
http://news.onlinedown.net/info/15911-1.htm
屏蔽掉该TCP连接的端口就行了.
我一年前写过一个帖子是如何中断已有的RST连接,你可以看看。
http://search.csdn.net/Expert/topic/2277/2277485.xml?temp=1.098269E-02
使用iphelper.dll 中的SetTcpEntry()函数就行了,在使用这个函数之前,先获得TCP连接信息。int main(int argc, char* argv[])
{ // Declare and initialize variables
PMIB_TCPTABLE pTcpTable = 0;
char ipaddress[100]; //pTcpTable = (MIB_TCPTABLE*) malloc(sizeof(MIB_TCPTABLE));
DWORD dwSize = 0; // Make an initial call to GetTcpTable to
// get the necessary size into the dwSize variable
if( GetTcpTable(pTcpTable, &dwSize, TRUE) == ERROR_INSUFFICIENT_BUFFER )
{
pTcpTable = ( MIB_TCPTABLE* ) malloc( (UINT) dwSize );
} // Make a second call to GetTcpTable to get
// the actual data we require
DWORD dwRetVal;
if( (dwRetVal = GetTcpTable( pTcpTable, &dwSize, TRUE )) == NO_ERROR )
{
for( int i = 0; i < (int) pTcpTable->dwNumEntries; i++ )
{
sprintf( ipaddress, "%d.%d.%d.%d",
(pTcpTable->table[i].dwRemoteAddr >> 24) & 0xFF,
(pTcpTable->table[i].dwRemoteAddr >> 16) & 0xFF,
(pTcpTable->table[i].dwRemoteAddr >> 8) & 0xFF,
(pTcpTable->table[i].dwRemoteAddr) & 0xFF ); printf( "%s\n", ipaddress );
// kill the TCP link to 210.51.181.253
if( strcmp(ipaddress, "253.181.51.210") == 0 )
{
MIB_TCPROW sKillConn;
sKillConn = pTcpTable->table[i];
sKillConn.dwState = MIB_TCP_STATE_DELETE_TCB;
// close tcp connection
DWORD dwRez = SetTcpEntry( &sKillConn );
}
}
} else
{
printf( "\tCall to GetTcpTable failed.\n" );
}
if( pTcpTable )
{
free( pTcpTable ) ;
}
return 0;
}