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