Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

sys/socket.h :-[

6.1K
06 июля 2004 года
Krieger
16 / / 06.07.2004
Вот кропаю я код программы клиент/сервер, и тут при первом компиле мне выдаёт: невозможно открыть <САБЖ>
Цитата:
...fatal error C1083: Cannot open include file: 'sys/socket.h': No such file or directory
VC++ 6.0

Помогите, братцы! Где взять сабж?!
3
06 июля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Krieger
Вот кропаю я код программы клиент/сервер, и тут при первом компиле мне выдаёт: невозможно открыть <САБЖ>
Цитата:
...fatal error C1083: Cannot open include file: 'sys/socket.h': No such file or directory
VC++ 6.0

Помогите, братцы! Где взять сабж?!



У тебя код линуховый, VC++ его не скомпилит.
Либо компили с помощью minGW, либо найди нормальный пример.

6.1K
06 июля 2004 года
Krieger
16 / / 06.07.2004
Цитата:
Originally posted by Green


У тебя код линуховый, VC++ его не скомпилит.
Либо компили с помощью minGW, либо найди нормальный пример.



Да нет, вообще тема урока - WinSocket. И я не пример компилю, а сам набиваю.
Для танкистов: ФИШКА В ТОМ, ЧТО У МЕНЯ НЕТУ САБЖА!!! (ну и, наверное, вообще ничего в папке sys/ нету (там ещё несколько ашек)).
Прошу дать линк.

3
06 июля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Krieger

Да нет, вообще тема урока - WinSocket. И я не пример компилю, а сам набиваю.
Для танкистов: ФИШКА В ТОМ, ЧТО У МЕНЯ НЕТУ САБЖА!!! (ну и, наверное, вообще ничего в папке sys/ нету (там ещё несколько ашек)).
Прошу дать линк.



Для тех, кто хамит из бронепоезда:
папка sys есть в gcc и др. линуховых компиляторах, в VC++ в ней ничего относящегося к сокетам нет, в ней вообще ничего особенного нет.
Используй Winsock2.h

6.1K
06 июля 2004 года
Krieger
16 / / 06.07.2004
Цитата:
Originally posted by Green


Для тех, кто хамит из бронепоезда:
папка sys есть в gcc и др. линуховых компиляторах, в VC++ в ней ничего относящегося к сокетам нет, в ней вообще ничего особенного нет.
Используй Winsock2.h


Так и будем мерно матюгаться, пока мой бронепоезд не обгонит твой танк. :)
Короче, читай.

16. Работа с WinSocket

Socket (гнездо, разъем) - абстрактное программное понятие, используемое для обозначения в прикладной программе конечной точки канала связи с коммуникационной средой, образованной вычислительной сетью. При использовании протоколов TCP/IP можно говорить, что socket является средством подключения прикладной программы к порту (см. выше) локального узла сети.

Socket-интерфейс представляет собой просто набор системных вызовов и/или библиотечных функций языка программирования СИ, разделенных на четыре группы:

1. Локального управления
2. Установления связи
3. Обмена данными (ввода/вывода)
4. Закрытия связи
5. Пример использования WinSocket




Ниже рассматривается подмножество функций socket-интерфейса, достаточное для написания сетевых приложений, реализующих модель "клиент-сервер" в режиме с установлением соединения.
1. Функции локального управления

Функции локального управления используются, главным образом, для выполнения подготовительных действий, необходимых для организации взаимодействия двух программ-партнеров. Функции носят такое название, поскольку их выполнение носит локальный для программы характер.
1.1 Создание socket'а

Создание socket'а осуществляется следующим системным вызовом

#include <sys/socket.h>
int socket (domain, type, protocol)
int domain; int type; int protocol;

Аргумент domain задает используемый для взаимодействия набор протоколов (вид коммуникационной области), для стека протоколов TCP/IP он должен иметь символьное значение AF_INET (определено в sys/socket.h).

Аргумент type задает режим взаимодействия:
SOCK_STREAM - с установлением соединения;
SOCK_DGRAM - без установления соединения.

Аргумент protocolзадает конкретный протокол транспортного уровня (из нескольких возможных в стеке протоколов). Если этот аргумент задан равным 0, то будет использован протокол "по умолчанию" (TCP для SOCK_STREAM и UDP для SOCK_DGRAM при использовании комплекта протоколов TCP/IP).

При удачном завершении своей работы данная функция возвращает дескриптор socket'а - целое неотрицательное число, однозначно его идентифицирующее. Дескриптор socket'а аналогичен дескриптору файла ОС UNIX.

При обнаружении ошибки в ходе своей работы функция возвращает число "-1".
1.2. Связывание socket'а

Для подключения socket'а к коммуникационной среде, образованной вычислительной сетью, необходимо выполнить системный вызов bind, определяющий в принятом для сети формате локальный адрес канала связи со средой. В сетях TCP/IP socket связывается с локальным портом. Системный вызов bind имеет следующий синтаксис:

#include <sys/types.h>
#include <sys/socket.h> #include <netinet/in.h>
int bind (s, addr, addrlen) int s;
struct sockaddr *addr; int addrlen;

Аргумент s задает дескриптор связываемого socket'а.

---кусь---
Ну и в таком духе. А книга, по ходу, об VC++ собственной персоной.

Ты упомянул о Winsocket2.h
А там именно те функции, что надо (socket, bind, connect, listen etc)???
Если нет - прошу линк на статью, желательно подробную, по этой ашке.

527
07 июля 2004 года
pavor
275 / / 28.09.2003
Цитата:
Originally posted by Krieger

Так и будем мерно матюгаться, пока мой бронепоезд не обгонит твой танк. :)
Короче, читай.

16. Работа с WinSocket

Socket (гнездо, разъем) - абстрактное программное понятие, используемое для обозначения в прикладной программе конечной точки канала связи с коммуникационной средой, образованной вычислительной сетью. При использовании протоколов TCP/IP можно говорить, что socket является средством подключения прикладной программы к порту (см. выше) локального узла сети.

Socket-интерфейс представляет собой просто набор системных вызовов и/или библиотечных функций языка программирования СИ, разделенных на четыре группы:

1. Локального управления
2. Установления связи
3. Обмена данными (ввода/вывода)
4. Закрытия связи
5. Пример использования WinSocket




Ниже рассматривается подмножество функций socket-интерфейса, достаточное для написания сетевых приложений, реализующих модель "клиент-сервер" в режиме с установлением соединения.
1. Функции локального управления

Функции локального управления используются, главным образом, для выполнения подготовительных действий, необходимых для организации взаимодействия двух программ-партнеров. Функции носят такое название, поскольку их выполнение носит локальный для программы характер.
1.1 Создание socket'а

Создание socket'а осуществляется следующим системным вызовом

#include <sys/socket.h>
int socket (domain, type, protocol)
int domain; int type; int protocol;

Аргумент domain задает используемый для взаимодействия набор протоколов (вид коммуникационной области), для стека протоколов TCP/IP он должен иметь символьное значение AF_INET (определено в sys/socket.h).

Аргумент type задает режим взаимодействия:
SOCK_STREAM - с установлением соединения;
SOCK_DGRAM - без установления соединения.

Аргумент protocolзадает конкретный протокол транспортного уровня (из нескольких возможных в стеке протоколов). Если этот аргумент задан равным 0, то будет использован протокол "по умолчанию" (TCP для SOCK_STREAM и UDP для SOCK_DGRAM при использовании комплекта протоколов TCP/IP).

При удачном завершении своей работы данная функция возвращает дескриптор socket'а - целое неотрицательное число, однозначно его идентифицирующее. Дескриптор socket'а аналогичен дескриптору файла ОС UNIX.

При обнаружении ошибки в ходе своей работы функция возвращает число "-1".
1.2. Связывание socket'а

Для подключения socket'а к коммуникационной среде, образованной вычислительной сетью, необходимо выполнить системный вызов bind, определяющий в принятом для сети формате локальный адрес канала связи со средой. В сетях TCP/IP socket связывается с локальным портом. Системный вызов bind имеет следующий синтаксис:

#include <sys/types.h>
#include <sys/socket.h> #include <netinet/in.h>
int bind (s, addr, addrlen) int s;
struct sockaddr *addr; int addrlen;

Аргумент s задает дескриптор связываемого socket'а.

---кусь---
Ну и в таком духе. А книга, по ходу, об VC++ собственной персоной.

Ты упомянул о Winsocket2.h
А там именно те функции, что надо (socket, bind, connect, listen etc)???
Если нет - прошу линк на статью, желательно подробную, по этой ашке.


Не пиши так много больше ;)
Если под Windows пишешь, то включай Winsock2.h, подключай библиотеку Ws2_32.lib и не морочь голову.
Если кроссплатформенное, то лучше используй функции только из Winsock.h библиотека WSock32.lib

3
07 июля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Krieger

<skiped>

Ты упомянул о Winsocket2.h
А там именно те функции, что надо (socket, bind, connect, listen etc)???
Если нет - прошу линк на статью, желательно подробную, по этой ашке.



http://www.firststeps.ru/mfc/net/socket/socket1.html

6.1K
07 июля 2004 года
Krieger
16 / / 06.07.2004
Цитата:


А вот за это - спасибо. Я раньше там этого не видел (новое небось).
Ещё раз спасибо.

6.1K
08 июля 2004 года
Krieger
16 / / 06.07.2004
А вообще реально ли создать клиент и сервер на разных платформах, и чтобы они друг друга понимали? То есть, например, сервер на юниксовых сокетах, а клиенты - на винде.
3
08 июля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Krieger
А вообще реально ли создать клиент и сервер на разных платформах, и чтобы они друг друга понимали? То есть, например, сервер на юниксовых сокетах, а клиенты - на винде.



:D
Ну а сам, как думаешь?
Ты сейчас в какой ОС сидишь?
А на этом сервере какая?

6.1K
09 июля 2004 года
Krieger
16 / / 06.07.2004
Цитата:
Originally posted by Green


:D
Ну а сам, как думаешь?
Ты сейчас в какой ОС сидишь?
А на этом сервере какая?


Ну, ладно. Я имел в виду - стандартными средствами (теперь понимаю глупость своих слов).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог