#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"wininet.lib")
void main() {
//----------------------
// Initialize Winsock
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR)
printf("Error at WSAStartup()\n");
//----------------------
// Create a SOCKET for listening for
// incoming connection requests
SOCKET ListenSocket;
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return;
}
//----------------------
// The sockaddr_in structure specifies the address family,
// IP address, and port for the socket that is being bound.
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(803);
//----------------------
// Bind the socket.
if (bind( ListenSocket, (SOCKADDR*) &service, sizeof(service)) == SOCKET_ERROR)
{
printf("bind() failed.\n");
closesocket(ListenSocket);
return;
}
else
{
printf("bind() successed.\n");
closesocket(ListenSocket);
return;
}
WSACleanup();
return;
}
Opened TCP-UDP port локальная машина
Я пишу маленькую программу и тут столкнулся с проблемой. Программа принимает один аргумент(номер порта). Запускаю я программу на локальной машине и мне нужно чтобы программы выдавала открыт этот порт или нет. Я не знаю как сделать это. Пробовал но чтото не получилось. Подтолкните на мысль ;)
если порт открыт - bind вернет ошибку. так что никаких проверок специальных не надо.
ДАА точно :) Вот спасибо за идею. У меня тут уже такие идеи пошли что просто пипец.Например выполнить через ShellExecute команду netstat -a > tcp.txt потом открыть txt файл и искать там порт который нужно, но эта идея была уже на крайняк :) Вот сам код которым я решил свою проблему. Сам он взят из MSDN и ещё добавил проверку.