CheckPort Library
Two exported functions that test whether a TCP or UDP port on a host is in use.
A tiny reusable library for port probing. CheckPortUDP tries to bind() a datagram socket to the target address and port - if the bind fails, something else already owns it. CheckPortTCP instead attempts connect() and reports success when a listener answers. Both are __declspec(dllexport) so any C/C++ program can link them, and the included console driver shows the one-line call pattern. Use it for pre-flight checks before starting your own listeners, or for simple reachability probes.
#include <winsock.h>
//////////////////////////////////////////////////////////////////////
__declspec(dllexport) int CheckPortUDP(char *nAddress, short int nPort)
{
struct sockaddr_in nSockServer;
WSADATA wsaData;
int lBusy = 0;
int nSocket;
if( WSAStartup( 0x0101, &wsaData ) == 0 )
{
nSockServer.sin_family = AF_INET;
nSockServer.sin_port = htons( nPort );
nSockServer.sin_addr.s_addr = inet_addr( nAddress );
nSocket = socket( AF_INET, SOCK_DGRAM, 0 );
lBusy = ( bind( nSocket, (SOCKADDR FAR *) &nSockServer,
sizeof( SOCKADDR_IN ) ) == SOCKET_ERROR );
if( lBusy )
closesocket( nSocket );
WSACleanup();
}
return( lBusy );
}
//////////////////////////////////////////////////////////////////////
__declspec(dllexport) int CheckPortTCP(char *nAddress, short int nPort)
{
struct sockaddr_in nSockServer;
WSADATA wsaData;
int lBusy = 0;
int nSocket;
if( WSAStartup( 0x0101, &wsaData ) == 0 )
{
nSockServer.sin_family = AF_INET;
nSockServer.sin_port = htons( nPort );
nSockServer.sin_addr.s_addr = inet_addr( nAddress );
nSocket = socket( AF_INET, SOCK_STREAM, 0 );
lBusy = ( connect( nSocket, (struct sockaddr *) &nSockServer,
sizeof( nSockServer ) ) == 0 );
if( lBusy )
closesocket( nSocket );
WSACleanup();
}
return( lBusy );
}
//////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int CheckPortUDP(char *, short int);
int CheckPortTCP(char *, short int);
int main()
{
if(CheckPortTCP("127.0.0.1",80))
printf("Http Port In Use.");
else
printf("Http Port NOT In Use.");
return 0;
}