Ключевые слова:raw, socket, example, (найти похожие документы)
Date: Thu, 14 Jun 2001 06:23:21 +0000 (UTC)
From: (Valentin Nechayev) <netch@segfault.kiev.ua>
Newsgroups: fido7.ru.unix.prog
Subject: пример работы с UDP сокетами
aT> Народ киньте пример простейший по работе с датаграммными сокетами...
aT> а то я что ни пишу, прога компилируется - а при выполнении не может bind
aT> вызвать.... точнее он -1 возвращает.
Это не диагностика, это "у меня в подвале раздается подземный стук".
Расскажи какое errno при этом возвращается и как оно называется в этой системе.
Пример кидать - оно можно, но поймешь ли что из примера действительно нужно?
Проверь, что
1) Переменная с адресом, которая типа sockaddr_in, предварительно залита
нулями (через memset(&addr,0,sizeof addr) или похоже),
2) Поле sin_family выставлено правильно - в AF_INET.
А в качестве примера хотя бы так:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main() {
struct sockaddr_in si;
int s;
s = socket( PF_INET, SOCK_DGRAM, 0 );
if( s == -1 ) { perror( "socket()" ); return 1; }
memset( &si, 0, sizeof si );
si.sin_family = AF_INET;
si.sin_addr.s_addr = INADDR_ANY;
si.sin_port = htons( 6800 );
if( bind( s, ( struct sockaddr*) &si, sizeof si ) < 0 ) {
perror( "bind()" ); return 1;
}
puts( "Binding OK" );
return 0;
}
/netch