![]() |
|
Создание сокета
|
makefile
Функция socket()
Добавлено: Создаю сокет sd = socket(PF_INET,SOCK_STREAM,0); после этого sd равен 0. Это вообще нормально, или нет? ошибку ф-я в этом случае не возвращает, а вот ф-я connect() с этим дескриптором пишет, что это не дискриптор сокета! Работаю в LInux не рутом на С! Подскажите в чем может быть проблемма! |
Например так:
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); Что конкретно надо от сокета? [s]Исправлено: unknown bug, 18:32 28-10-2003[/s] |
makefile
Normalno elsi u tebya stdin, stdout, ... zakriti
#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> int main () { const char host[] = "www.tanet.edu.te.ua"; const int port = 80; char buffer[1024] = "GET / HTTP/1.0\r\n\r\n"; int n; int s; struct sockaddr_in addr; struct hostent *he; fprintf (stderr, "Connecting to %s:%d ...\n", host, port); s = socket (AF_INET, SOCK_STREAM, IPPROTO_IP); if (s < 0) { perror ("socket"); return (1); } he = gethostbyname (host); if (!he) { fprintf (stderr, "gethostbyname: %s\n", hstrerror (h_errno)); return (1); } memset (&addr, 0, sizeof (addr)); addr.sin_family = AF_INET; addr.sin_port = htons (port); inet_aton (he->h_addr_list[0], addr.sin_addr); if (connect (s, (struct sockaddr *)&addr, sizeof (addr)) < 0) { perror ("connect"); return (1); } fprintf (stderr, "Connected!\nReceiving answer ...\n"); send (s, "GET / HTTP/1.0\r\n\r\n", 18, 0); while ((n = recv (s, buffer, sizeof (buffer), 0)) != 0) { if (n == -1) { perror ("recv"); break; } write (1, buffer, n, 0); } return (1); } Compile: gcc -o socket socket.c ./socket |
makefile
ParsVita
а причём здесь makefile??? :( |
Guest Боольшое спасибо!
Все работает! А все из-за IPPROTO_IP и AF_INET вместо PF_INET. а то замучался - в книгах написано 0 ставить, а книги за 70грн. покупал. Зато в них много др. полезного. Так что СПАСИБО! |
Время: 13:33. |
Время: 13:33.
© OSzone.net 2001-