Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Создание сокета в C (http://forum.oszone.net/showthread.php?t=30198)

01-01-1970 03:00 207750


ParsVita 28-10-2003 16:28 207748

Создание сокета

ParsVita 28-10-2003 16:30 207751

makefile
 
Функция socket()

Добавлено:

Создаю сокет
sd = socket(PF_INET,SOCK_STREAM,0);
после этого sd равен 0.
Это вообще нормально, или нет?
ошибку ф-я в этом случае не возвращает,
а вот ф-я connect() с этим дескриптором пишет, что это не дискриптор сокета!
Работаю в LInux не рутом на С!
Подскажите в чем может быть проблемма!

unknown bug 28-10-2003 17:32 207749

Например так:
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

Что конкретно надо от сокета?

[s]Исправлено: unknown bug, 18:32 28-10-2003[/s]

Guest 28-10-2003 22:30 207752

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

shurikan 29-10-2003 05:08 207753

makefile
 
ParsVita
а причём здесь makefile??? :(

ParsVita 30-10-2003 17:23 207754

Guest Боольшое спасибо!
Все работает! А все из-за IPPROTO_IP и AF_INET  вместо PF_INET.
а то замучался - в книгах написано 0 ставить, а книги за 70грн. покупал.
Зато в них много др. полезного.

Так что СПАСИБО!


Время: 13:33.

Время: 13:33.
© OSzone.net 2001-