Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Opened TCP-UDP port локальная машина

16K
12 августа 2007 года
4nob1oz
34 / / 14.06.2007
Я пишу маленькую программу и тут столкнулся с проблемой. Программа принимает один аргумент(номер порта). Запускаю я программу на локальной машине и мне нужно чтобы программы выдавала открыт этот порт или нет. Я не знаю как сделать это. Пробовал но чтото не получилось. Подтолкните на мысль ;)
2
13 августа 2007 года
squirL
5.6K / / 13.08.2003
если порт открыт - bind вернет ошибку. так что никаких проверок специальных не надо.
16K
13 августа 2007 года
4nob1oz
34 / / 14.06.2007
ДАА точно :) Вот спасибо за идею. У меня тут уже такие идеи пошли что просто пипец.Например выполнить через ShellExecute команду netstat -a > tcp.txt потом открыть txt файл и искать там порт который нужно, но эта идея была уже на крайняк :) Вот сам код которым я решил свою проблему. Сам он взят из MSDN и ещё добавил проверку.

Код:
#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;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог