При использовании system ("telnet ") нужно чтобы не останавливало программу. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет всем. Я хочу использовать в программе на Си функцию командной строки system ("telnet "). Не могу найти кое что. Вот у меня есть код на Си:
// проверяем открыт ли порт 80 на google
      printf ("YES");
if (system ("telnet [url]www.google.com[/url] 80" ))  
else 
      printf ("NO");
Мне нужно чтобы при определенном исходе срабатывал один из printf... но суть функции telnet такая , что если порт открыт, то она очищиет экран командной строки и ждет ... Может кто-то знает, как можно отменить ее выполнение? мне нужно только чтобы она узнала открыт порт или нет и все. Или же выполнилась, но вернула управление моей программе. Ping для моей задачи не подходит. Можно проверять соккетами на предмет успешного подключения, но вот хотелось бы вот так , через system. Заранее благодарю за любые соображения.

Решение задачи: «При использовании system ("telnet ") нужно чтобы не останавливало программу.»

textual
Листинг программы
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
 
 
int
main(int argc, char** argv)
{
    WSADATA wsaData;
    int res = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (res != NO_ERROR) {
        printf("WSAStartup function failed with error: %d\n", res);
        return 1;
    }
 
    SOCKET s;
    s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (s == INVALID_SOCKET) {
        printf("socket function failed with error: %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
    
    hostent* host;
    char* ip;
    host = gethostbyname("www.google.com");
    ip = inet_ntoa (*(struct in_addr *)*host->h_addr_list);   
 
    sockaddr_in sin;
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = inet_addr(ip);
    sin.sin_port = htons(80);
 
    res = connect(s, (SOCKADDR*)&sin, sizeof(sin));
    if (res == SOCKET_ERROR) {
        printf("connect function failed with error: %d\n", WSAGetLastError());
        res = closesocket(s);
        if (res == SOCKET_ERROR)
            printf("closesocket function failed with error: %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    printf("Connected to server.\n");
 
    res = closesocket(s);
    if (res == SOCKET_ERROR) {
        printf("closesocket function failed with error: %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    WSACleanup();
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы