The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"плииззз...    отошлите к доке по программированию сокетов..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"плииззз...    отошлите к доке по программированию сокетов..."
Сообщение от BINR emailИскать по авторуВ закладки on 26-Фев-03, 18:31  (MSK)
плииззз...    отошлите к доке по программированию сокетов...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от SergeiZz Искать по авторуВ закладки on 26-Фев-03, 18:48  (MSK)
>плииззз...    отошлите к доке по программированию сокетов...

Есть очень-очень-очень хорошая книга
http://www.ecst.csuchico.edu/~beej/guide/net/
на английском.
Только она для начинающих. После неё нужно читать man страницы.
Сформулируйте поточнее интерес к данной теме.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от BINR emailИскать по авторуВ закладки on 26-Фев-03, 19:18  (MSK)
>Сформулируйте поточнее интерес к данной теме.

спасибо :)

взял пример проги с сайта http://www.arh.ru/~zwon
надо что бы мой клиент обращался к серверу.
но не знаю как задать адрес сервера вида "х.х.х.х" в структуре типа sockaddr_in,
наверно функция преобразования ip адреса "человечьего" в "компьютерный" вид должна быть.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от SergeiZz Искать по авторуВ закладки on 26-Фев-03, 19:34  (MSK)
>>Сформулируйте поточнее интерес к данной теме.
>
>спасибо :)
>
>взял пример проги с сайта http://www.arh.ru/~zwon
>надо что бы мой клиент обращался к серверу.
>но не знаю как задать адрес сервера вида "х.х.х.х" в структуре типа
>sockaddr_in,
>наверно функция преобразования ip адреса "человечьего" в "компьютерный" вид должна быть.

Извините, зачитался Вашим http://www.arh.ru/~zwon/socket/socket.html
Боже мой -- какая пакость! Почитайте книжку, которую я указал, сравните и
скажите, что я (не)прав. Досмотрю этот... текст. Расскажу про
преобразование адресов.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от BINR emailИскать по авторуВ закладки on 26-Фев-03, 19:40  (MSK)
;)
а я твою полным ходом читаю :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от BINR emailИскать по авторуВ закладки on 26-Фев-03, 20:37  (MSK)
почему функция bind нормально связывает порты и сокеты если структура sockaddr, поле my_addr.sin_addr.s_addr=INADDR_ANY ?
но ни фига не связывает если my_addr.sin_addr.s_addr=inet_addr("x.x.x.x");
х- цифирки
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от Bogerm Искать по авторуВ закладки on 27-Фев-03, 04:27  (MSK)
>почему функция bind нормально связывает порты и сокеты если структура sockaddr, поле
>my_addr.sin_addr.s_addr=INADDR_ANY ?
>но ни фига не связывает если my_addr.sin_addr.s_addr=inet_addr("x.x.x.x");
>х- цифирки

Во-первых хорошо было бы обнулить структуру my_addr перед использованием.
В этой структуре есть поля, которые всегда должны быть нулувыми:
bzero( &my_addr, sizeof(my_addr) );
Во-вторых bind может не связывать адрес, если на машине нет интерфейса с этим адресом.
В-третьих было бы неплохо взглянуть на строку, которую печатает perror.
В четвертых я рекомендую не заморачиваться с поиском информации в интернете, а купить книгу: Йон Снейдер (2001) "Эффективное программирование TCP/IP". Более толковой книги по IP и сокетам я нигде не видел.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от SergeiZz Искать по авторуВ закладки on 27-Фев-03, 09:43  (MSK)
>купить книгу: Йон Снейдер (2001) "Эффективное программирование TCP/IP".
>Более толковой книги по IP и сокетам я нигде не видел.

http://oz.by/books/more102572.html  -- более 7000руб.

http://www.books.ru/shop/books/11063  -- менее 200руб.

Серьёзная и толковая книга для профессионалов.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от BINR emailИскать по авторуВ закладки on 27-Фев-03, 20:44  (MSK)
socket() --- создаю сокет,
connect()--- поключаюсь к порту,
recev() ---- не достаёт из порта.. почему так может быть ? что перепроверить ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от XMan Искать по авторуВ закладки on 27-Фев-03, 23:59  (MSK)
Тебе все варианты ответов или только самый распространенный ?
Последний звучит так - "телепаты в отпуске" :)
Из написанного, например, непонятно, как оно у тебя вообще компилится :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от BINR emailИскать по авторуВ закладки on 28-Фев-03, 11:32  (MSK)
>Тебе все варианты ответов или только самый распространенный ?
>Последний звучит так - "телепаты в отпуске" :)
>Из написанного, например, непонятно, как оно у тебя вообще компилится :)

int sz;
struct sockaddr_in ssa;

sz=sizeof(ssa);
s=socket(AF_INET, SOCK_STREAM, 0);
memset(&(ssa.sin_zero),'\0',8);
ssa.sin_family=AF_INET;
ssa.sin_port=htons(502);//зарезервирован под протокол modbusip
ssa.sin_addr.s_addr=inet-addr("x.x.x.x");//x -- цифирьки

connect(s,(struct sockaddr *) &ssa,sizeof(ssa))
listen(s,10);
accept(s,(struct sockaddr *) &ssa,&sz);
a=recv(s,&buf[0],10);

переменная "a" возвращает -1

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от romanSA Искать по авторуВ закладки on 28-Фев-03, 15:44  (MSK)
>>Тебе все варианты ответов или только самый распространенный ?
>>Последний звучит так - "телепаты в отпуске" :)
>>Из написанного, например, непонятно, как оно у тебя вообще компилится :)
>
>int sz;
>struct sockaddr_in ssa;
>
>sz=sizeof(ssa);
>s=socket(AF_INET, SOCK_STREAM, 0);
>memset(&(ssa.sin_zero),'\0',8);
>ssa.sin_family=AF_INET;
>ssa.sin_port=htons(502);//зарезервирован под протокол modbusip
>ssa.sin_addr.s_addr=inet-addr("x.x.x.x");//x -- цифирьки
>
>connect(s,(struct sockaddr *) &ssa,sizeof(ssa))
>listen(s,10);
>accept(s,(struct sockaddr *) &ssa,&sz);
>a=recv(s,&buf[0],10);
>
>переменная "a" возвращает -1

Гм... И что это у Вас, сервер или клиент?
Вообще вся эта последовательность вызовов выглядит довольно странно.
Всю жизнь считал, что для клиента нужно делать так:
s = socket(...);
connect(s, ...);

read(s, ...); write(s, ...);
или
recv(s, ...); send(s, ...);

shutdown(s, ...);
close(s);

А для сервера:
s = socket(...);
bind(s, ...);
listen(s, ...);
client = accept(s, ...);
read(client, ...); write(client, ...);
или
recv(client, ...); send(client, ...);

close(client);

Вот здесь несколько ссылок, которыми я сам пользовался:
http://www.lowtek.com/sockets/

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "RE: плииззз...    отошлите к доке по программированию сокето..."
Сообщение от BINR emailИскать по авторуВ закладки on 03-Мрт-03, 15:42  (MSK)
>>>Тебе все варианты ответов или только самый распространенный ?
>>>Последний звучит так - "телепаты в отпуске" :)
>>>Из написанного, например, непонятно, как оно у тебя вообще компилится :)
>>
>>int sz;
>>struct sockaddr_in ssa;
>>
>>sz=sizeof(ssa);
>>s=socket(AF_INET, SOCK_STREAM, 0);
>>memset(&(ssa.sin_zero),'\0',8);
>>ssa.sin_family=AF_INET;
>>ssa.sin_port=htons(502);//зарезервирован под протокол modbusip
>>ssa.sin_addr.s_addr=inet-addr("x.x.x.x");//x -- цифирьки
>>


Для клиента работет :)
спасибо :)
Ян
>>connect(s,(struct sockaddr *) &ssa,sizeof(ssa))
>>listen(s,10);
>>accept(s,(struct sockaddr *) &ssa,&sz);
>>a=recv(s,&buf[0],10);
>>
>>переменная "a" возвращает -1
>
>Гм... И что это у Вас, сервер или клиент?
>Вообще вся эта последовательность вызовов выглядит довольно странно.
>Всю жизнь считал, что для клиента нужно делать так:
>s = socket(...);
>connect(s, ...);
>
>read(s, ...); write(s, ...);
>или
>recv(s, ...); send(s, ...);
>
>shutdown(s, ...);
>close(s);
>
>А для сервера:
>s = socket(...);
>bind(s, ...);
>listen(s, ...);
>client = accept(s, ...);
>read(client, ...); write(client, ...);
>или
>recv(client, ...); send(client, ...);
>
>close(client);
>
>Вот здесь несколько ссылок, которыми я сам пользовался:
>http://www.lowtek.com/sockets/


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру