UDP端口监听工具


最近经常测试流媒体的传输,要监听某个端口看流是否引入了,每次打开wireshark太麻烦了,就写了简单的小工具,监听某个端口是否来数据了:

std::string GetLocalIpAddress()
{
	WORD wVersionRequested = MAKEWORD(2, 2);
	WSADATA wsaData;
	if (WSAStartup(wVersionRequested, &wsaData) != 0)
		return "";
	char local[255] = {0};
	gethostname(local, sizeof(local));
	hostent* ph = gethostbyname(local);
	if (ph == NULL)
		return "";
	in_addr addr;
	memcpy(&addr, ph->h_addr_list[0], sizeof(in_addr)); // 这里仅获取第一个ip;
	std::string localIP;
	localIP.assign(inet_ntoa(addr));
	WSACleanup();
	return localIP;
}

int UDPReceiveTest(int port)  
{  
	SOCKET sockSrv;
	SOCKADDR_IN addrSrv;
	WORD wVersionRequested = MAKEWORD(1,1);
	WSADATA wsaData;
	int err = WSAStartup(wVersionRequested,&wsaData);
	if(err != 0)
	{
		return 0;
	}
	if( LOBYTE(wsaData.wVersion) != 1 ||
		HIBYTE(wsaData.wVersion) != 1)
	{
		WSACleanup();
		return 0;
	}

	std::string localIpAddress = GetLocalIpAddress();
	printf("Local IP Address is [%s]\n",localIpAddress.c_str());

	//创建套接字;
	sockSrv = socket(AF_INET,SOCK_DGRAM,0);
	addrSrv.sin_addr.S_un.S_addr = inet_addr(localIpAddress.c_str());
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(port);

	//绑定套接字;
	bind(sockSrv,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR));

	//等待并接收数据;
	SOCKADDR_IN addrClient;
	int len = sizeof(SOCKADDR);
	char recvBuf[4096];
	printf("Start Listen the port:[%d]...\n",port);
	int counter = 0;
	int lret = 0;
	while(1)
	{
	    lret = ::recvfrom(sockSrv,recvBuf,4096,0,(SOCKADDR *)&addrClient,&len);		
		if (lret > 0)
		{
			printf("\r\tReceive package counter:------[%d]",counter++);
			//printf("%s\n",recvBuf);
		}

		if(0 == strcmp(recvBuf,"exit"))
			break;
	}

	//关闭套接字;
	::closesocket(sockSrv);
	::WSACleanup();
	return 0;
}  

int _tmain(int argc, _TCHAR* argv[])
{
	
	int port = 6000;
	if (argc > 1)
	{
		port = atoi((char*)argv[1]);
	}
	else
	{
		printf("Usage: UDPReceiveTest.exe port(default 6000)\n");
	}

	UDPReceiveTest(port);
	
	return 0;	
}



工具连接:http://download.csdn.net/detail/longlong530/5831341

使用截图:







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值