社区
网络编程
帖子详情
如何查看本机有哪些端口被打开?
flyinwuhan
2005-06-08 02:02:17
编程实现,不是用netstat -a命令
如果能得到打开此端口的进程的信息,再送100分
...全文
320
7
打赏
收藏
如何查看本机有哪些端口被打开?
编程实现,不是用netstat -a命令 如果能得到打开此端口的进程的信息,再送100分
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
songsu
2005-06-23
打赏
举报
回复
MARK
flyinwuhan
2005-06-09
打赏
举报
回复
谢谢2位,但是利用shellexec 执行cmd还是不符合要求
flyinwuhan
2005-06-08
打赏
举报
回复
谢谢2位,怎么都是调用cmd啊,难道netstat的内部实现是微软的秘密?
luoxiangdong
2005-06-08
打赏
举报
回复
ShellExecute "tasklist/V /FI PID eq 848" 取得指定PID的进程详细信息
bohut
2005-06-08
打赏
举报
回复
2执行dos命令“netstat -a”获得打开的端口号
#define EXECDOSCMD "netstat -a"
BOOL ExecDosCmd()
{
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
return FALSE;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
//关键步骤,CreateProcess函数参数意义请查阅MSDN
if (!CreateProcess(NULL, EXECDOSCMD
,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
return FALSE;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while (true)
{
if (ReadFile(hRead,buffer,4095,&bytesRead,NULL) == NULL)
break;
//buffer中就是执行的结果,可以保存到文本,也可以直接输出
printf(buffer);
Sleep(200);
}
return TRUE;
}
luoxiangdong
2005-06-08
打赏
举报
回复
ShellExec "netstat -a -o" 取输出流
bohut
2005-06-08
打赏
举报
回复
1.获得端口对应的进程名称
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "ws2_32.lib")
typedef struct _HandleInfo
{
USHORT wPid;
USHORT wCreatorBackTraceIndex;
BYTE objType;
BYTE handleAttibs;
USHORT handleOffset;
DWORD dwKeObject;
ULONG dwGrantedAccess;
}HANDLEINFO, *PHANDLEINFO;
int main(int argc, char* argv[])
{
WSADATA wd;
unsigned int ret = WSAStartup(0x0202, &wd);
typedef DWORD (WINAPI *PQuerySystemInformation)(DWORD, PBYTE, DWORD, PDWORD);
PQuerySystemInformation pQuerySystemInformation = (PQuerySystemInformation)GetProcAddress(GetModuleHandle("ntdll.dll"), "ZwQuerySystemInformation");
if(pQuerySystemInformation == NULL)
{
MessageBox(NULL, "Can't find NtQuerySystemInformation int Ntdll.dll!", "Failed", 0);
return 1;
}
BYTE *buf = new BYTE[20];
PHANDLEINFO phandleinfo = NULL;
DWORD dwRetSize = 0;
DWORD dwNum = 0;
unsigned int i;
ret = pQuerySystemInformation(16, buf,20,&dwRetSize);
if(0 != ret)
{
if(dwRetSize > 0)
{
//dwNum = dwRetSize/sizeof(HANDLEINFO);
delete [] buf;
buf = new BYTE[dwRetSize];
ret = pQuerySystemInformation(16, buf, dwRetSize, &dwRetSize);
if(0 != ret)
{
printf("Can't get any handles!\n");
goto end;
}
}
else
{
goto end;
}
}
dwNum = *(DWORD*)buf;
phandleinfo = (PHANDLEINFO)(buf+4);
for(i=0;i<dwNum;i++)
{
//static int iCount = 0;
//static WORD wPid = -1;
HANDLEINFO *pSeek = phandleinfo + i;
if((pSeek->objType==0x1a) && (pSeek->wPid))
{
//iCount++;
//wPid = pSeek->wPid;
HANDLE hSrcProcess;
hSrcProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE, pSeek->wPid);
if(hSrcProcess == NULL)
continue;
__try
{
SOCKET hSock;
ret = DuplicateHandle(hSrcProcess, (HANDLE)(pSeek->handleOffset), GetCurrentProcess(), (HANDLE *)&hSock, STANDARD_RIGHTS_REQUIRED,TRUE,0);
if(ret == 0)
{
int errcode = GetLastError();
continue;
}
sockaddr_in in = {0};
in.sin_family = AF_INET;
int dwSize = sizeof(in);
if(SOCKET_ERROR != getsockname(hSock, (sockaddr *)&in, &dwSize))
{
char name[0x100] = {0};
HMODULE hDll = LoadLibrary("psapi.dll");
typedef DWORD (WINAPI *PGETMODULEFILENAMEEX)(HANDLE, HMODULE, LPTSTR, DWORD);
//typedef BOOL (WINAPI *PENUMPROCESSMODULES)(HANDLE, HMODULE*, DWORD, LPDWORD);
PGETMODULEFILENAMEEX pfunc = (PGETMODULEFILENAMEEX)GetProcAddress(hDll, "GetModuleFileNameExA");
//PENUMPROCESSMODULES penum = (PENUMPROCESSMODULES)GetProcAddress(hDll, "EnumProcessModules");
//DWORD dwCb, dwRet;
//HMODULE module[1000];
//ret = penum(hSrcProcess
pfunc(hSrcProcess, NULL, name, 0x100);
FreeLibrary(hDll);
printf("socket:%4d port:%4d PID:%4d(%s)\n", pSeek->handleOffset, ntohs(in.sin_port), pSeek->wPid, name);
}
}
__finally
{
CloseHandle(hSrcProcess);
}
}
}
getchar();
end:
delete [] buf;
return 0;
}
怎样
查看
本机
打开
的
端口
?
怎样
查看
本机
打开
的
端口
? https://zhidao.baidu.com/question/203087246.html Netstat,显示协议统计和当前的 TCP/IP 网络连接。 -a,显示所有连接和侦听
端口
。服务器连接通常不显示。 -n,以数字格式显示地址和
端口
号(而不是尝试查找名称)。 netstat -an 查询占用了8080
端口
的进程: netstat -ano|...
Linux如何
查看
端口
是否
打开
?
所以如传输控制协议和用户数据协议套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。在Linux系统中,
查看
端口
是否
打开
可以通过命令来完成,这其中比较常见的命令为lsof命令、netstat命令,本文重点为大家介绍一下lsof命令,我们一起来学习一下吧。lsof命令用于
查看
你进程
打开
的文件、
打开
文件的进程、进程
打开
的
端口
。-c 列出指定进程所
打开
的文件;+d 列出目录下被
打开
的文件;
Android如何
查看
UDP
端口
,udp
端口
如何
打开
?UDP
端口
测试介绍
平时看似非常简单的计算机功能,却不知其中含有多少方面的程序协助。说到udp相信大家都不了解它是什么,有什么作用,其实简单的说,udp就是一个传输数据过程中的一个通道,也就是说我们平时通过qq或者其他软件传数据时,就需要udp
端口
的开通。在日常使用计算机的过程中,我们常常会不小心将UDP
端口
关闭了,却不知道
打开
,下面就让我们看看如何
打开
UDP
端口
。如何
打开
UDP
端口
1. 点击【开始】——控制面板——...
查看
本机
开放了哪些
端口
?
操作方法:单击“开始→程序→附件→命令提示符”,进入DOS窗口,输入命令 netstat -na 回车,于是就会显示
本机
连接情况及
打开
的
端口
,如图2。其中Local Address代表
本机
IP地址和
打开
的
端口
号(图中
本机
打开
了135
端口
),Foreign Address是远程计算机IP地址和
端口
号,State表明当前TCP的连接状态,图中LISTENING是监听状态,表明
本机
正在
打开
135
端口
监
Linux如何
查看
端口
是否开放?
其中,-t选项表示显示TCP
端口
,-u选项表示显示UDP
端口
,-l选项表示仅显示监听的
端口
,-n选项表示以数字形式显示
端口
号。通过netstat命令,我们可以
查看
特定
端口
是否处于监听状态,从而判断
端口
是否开放。在Linux系统,
查看
端口
是否开放是非常基本的需求,而且通过
查看
端口
开放的状态,可以了解哪些服务正在运行,那么Linux如何
查看
端口
是否开放?如果输出中包含了80
端口
的信息,并且状态为LISTEN,则表示该
端口
处于监听状态,即
端口
开放。如果输出中包含80
端口
的信息,则表示该
端口
开放。
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章