Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SOCKET, как получить дескриптор сокета 
:(
    Опции темы
chaos
Дата 3.11.2004, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 3
Всего: 44



Подскажите как получить дескриптор сокета и пребить его
PM WWW   Вверх
dargaard
Дата 4.11.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 450
Регистрация: 7.5.2004

Репутация: 1
Всего: 25



Что значит пребить?

Исползуи "socket( ...)" вызов.

socket ( AF_INET, тип сокета, протокол)

например:

#include <sys/socket.h>
#include <sys/types.h>

int sock;
sock = socket(AF_INET, SOCK_DGRAM,0); (датаграмы - для udp например)

sock = socket (AF_INET, SOCK_STREAM,0); (для tcp/ip)


далее для udp используешь bind на сервере:
Код

struct sockaddr_in serv;
int portno;
   portno = 5555;
   serv.sin_family = AF_INET;
   serv.sin_addr.s_addr = INADDR_ANY;
   serv.sin_port = htons(portno);

   ret = bind (sock,(struct sockaddr*) &serv, sizeof(serv));


и для чтения/записи - sendto (...) recvfrom ( ... )

Для tcpip:
используешь bind+listen+accept
Код

struct sockaddr_in serv_addr;
   bzero(&serv_addr,sizeof(serv_addr));

   serv_addr.sin_family = AF_INET;
   serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
   serv_addr.sin_port = htons (port);

   if (bind(fd, (struct sockaddr*)&serv_addr,sizeof(serv_addr)) <0 ) {
       printf("Bind error\n");
       return -1;
   }
                                                                               
   if (listen(fd,10)<0) {
       printf("listen error\n");
       return -1;
   }

   int connectfd;
   struct sockaddr_in client;
   int cllen = sizeof (client);
   connectfd = accept(fd,(struct sockaddr*)&client, &cllen);

   if (connectfd<0) {
       printf("Connection error\n");
       return -1;
   }
                                                             
// Соединились уже:)

для клиента используешь connect(...)
Код


char *ip = ...

   struct sockaddr_in con_addr;
   con_addr.sin_family = AF_INET;
   con_addr.sin_port = htons(port);
   inet_pton(AF_INET,ip,&con_addr.sin_addr.s_addr);

 int fd = socket(AF_INET,SOCK_STREAM,0);

if (connect(fd,(struct sockaddr*) &con_addr,sizeof(con_addr)) <0) {
//error
   }



для чтения/записи - read ( ... ) / write ( ... )



Добавлено @ 21:34
В конце для закрытия - close (sock)


--------------------
Ты должна сделать добро из зла 
потому что его больше не из чего
сделать. Р.П.Уоррен
PM MAIL WWW ICQ   Вверх
A...
Дата 4.11.2004, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 5.10.2004
Где: Ереван

Репутация: нет
Всего: 1



А лутше сперва прочитать этот документ...

http://www.ecst.csuchico.edu/~beej/guide/net/bgnet_pdf.zip
--------------------
Особое спасибо Русскому языку за предоставленные буквы...
PM MAIL ICQ   Вверх
Vaulter
Дата 10.11.2004, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



набери man socket и будет щастье тебе, и откроются глаза твои и узреешь


--------------------
PM MAIL WWW ICQ   Вверх
Kenterell
Дата 8.12.2004, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2004

Репутация: нет
Всего: нет



Po4emu C ne ponimaet class sockaddr_in?
vklu4au nujnie biblioteki, a nifiga...
PM MAIL   Вверх
dargaard
Дата 8.12.2004, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 450
Регистрация: 7.5.2004

Репутация: 1
Всего: 25



Kenterell
Модератор: Пожалуйста, один топик - один вопрос.

#include <netdb.h>




--------------------
Ты должна сделать добро из зла 
потому что его больше не из чего
сделать. Р.П.Уоррен
PM MAIL WWW ICQ   Вверх
Kenterell
Дата 8.12.2004, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2004

Репутация: нет
Всего: нет



Tam bil drugoy vopros, potom poyavilsya po hodu drugoy... Horosho...
I spasibo.
PM MAIL   Вверх
Гость_SuN
Дата 10.1.2005, 12:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











2Kenterell
sockaddr_in это не класс, это структура, С не понимает такого объявления:
sockaddr_in sock; // а вот С++ поймет, для С же нужно так:
struct sockaddr_in sock; как и было описано выше

  Вверх
Kenterell
Дата 12.1.2005, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.12.2004

Репутация: нет
Всего: нет



A teper' eshe odin: kak poluchit' avtorizaciyu socket'a cherez proxy
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.