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

Ваш аккаунт

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

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

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

WinSocket

2.8K
22 декабря 2002 года
U$Bepb
4 / / 22.12.2002
Всем здравствуйте...
Вот такая у меня проблема...
Инициализирую библиотеку сокетов вот так:
int init_winsock_dll=WSAStartup (MAKEWORD(2,0), &WSAData);
указываю версию DLL 2.0, проверяю на ошибку ничего не говорит о том что версия не та, поискал эту длл на винте нашёл версия и вправду 2.0, затем ставлю сокет в режим ожидания:
int listen_sock=listen(srv_socket,5);
Выдаёт ошибку, проверяю код ошибки функцией WSAGetLastError(),
Выдаёт вот этот код WSAEINVAL, я залез в MSDN и нашёл что это код, примерно это соответствует: Не правильно указа версия ДЛЛ, но как же не правильно ведь там чётко написано 2.0!!! Помогите пожалуйсто. Зарание благодарен.
2.2K
24 декабря 2002 года
lexa26
7 / / 24.12.2002
А ты пробовал, ни о чем ни думая, ставить другие версии? Я всегда пишу WSAInit(MAKEWORD(2,2),&wd) и все работает.
409
24 декабря 2002 года
Ramzes
163 / / 20.09.2000
Цитата:
Originally posted by lexa26
А ты пробовал, ни о чем ни думая, ставить другие версии? Я всегда пишу WSAInit(MAKEWORD(2,2),&wd) и все работает.



Да и в МСДН написано (2,2)
???
непонятно пишут

1.9K
25 декабря 2002 года
Teren
18 / / 21.10.2002
Цитата:
Originally posted by U$Bepb
Всем здравствуйте...
Вот такая у меня проблема...
Инициализирую библиотеку сокетов вот так:
int init_winsock_dll=WSAStartup (MAKEWORD(2,0), &WSAData);
указываю версию DLL 2.0, проверяю на ошибку ничего не говорит о том что версия не та, поискал эту длл на винте нашёл версия и вправду 2.0, затем ставлю сокет в режим ожидания:
int listen_sock=listen(srv_socket,5);
Выдаёт ошибку, проверяю код ошибки функцией WSAGetLastError(),
Выдаёт вот этот код WSAEINVAL, я залез в MSDN и нашёл что это код, примерно это соответствует: Не правильно указа версия ДЛЛ, но как же не правильно ведь там чётко написано 2.0!!! Помогите пожалуйсто. Зарание благодарен.



10022 - WSAEINVAL
Недопустимый параметр. Указано недопустимое значение параметра, например, контрольного кода в функции WSAIoctl. Эта же ошибка может возникнуть из-за текущего состояния сокета, например, при вызове функций accept или WSAAccept на сокете, не находящемся в состоянии прослушивания.

А вообще укажи версию 2.2

2.1K
27 декабря 2002 года
VitSoft
18 / / 15.11.2002
почитатйте статью с примером, думаю станет понятней

http://www.dev.vitgroup.com/modules.php?op=modload&name=Subjects&file=index&req=listpages&subid=10
2.8K
28 декабря 2002 года
U$Bepb
4 / / 22.12.2002
Цитата:
Originally posted by Ramzes


Да и в МСДН написано (2,2)
???
непонятно пишут




Ну вообщетоя пробывал не только 2.2 и 2.0, а также всё что тольк оможно и 1.1 и 1.0 как написано в томже МСДН.

2.0K
28 декабря 2002 года
yup
31 / / 03.12.2002
а ты код показать можешь ?
2.8K
28 декабря 2002 года
U$Bepb
4 / / 22.12.2002
//Инициализация интерфейса Winsock
WSADATA WSAData;
int init_winsock_dll=WSAStartup(0x0202, &WSAData);
//Проверка правильности инициализаци интерфейса Winsock
if(init_winsock_dll!=0)
{
debug_sock_error();
return TRUE;
}

//Создание сокета, в переменную srv_socket помещён дескриптер сокета, он нужен для выполенения всех операций над сокетом
srv_socket=socket(AF_INET,SOCK_STREAM,0);
//В случае ошибки функция вернёт значение INVALID_SOCKET
if(srv_socket==INVALID_SOCKET)
{
debug_sock_error();
return TRUE;
}

//Перед использованием сокета мы должны задать его параметры в структуре sockaddr_in
sockaddr_in srv_sockaddr;
//Поле sin_family определяет тип адреса
srv_sockaddr.sin_family=AF_INET;
//Поле sin_port определяет номер порта, который будет использоваться для передачи данных
srv_sockaddr.sin_port=htons(27600);
//Разрешаем серверу рабоать с любыми адресами
srv_sockaddr.sin_addr.s_addr=INADDR_ANY;

//Привязываем адрес к сокету
int bind_socket=bind(srv_socket,(LPSOCKADDR)&srv_sockaddr,sizeof(srv_sockaddr));
if(srv_socket==SOCKET_ERROR)
{
debug_sock_error();
return TRUE;
}
//Переключаем сокет в режим ожидания
int listen_sock=listen(srv_socket,5);
if(listen_sock==SOCKET_ERROR)
{
MessageBox(NULL, "listen", "Error: WSAEACCES (10013)", MB_OK);
debug_sock_error();
return TRUE;
}
2.0K
29 декабря 2002 года
yup
31 / / 03.12.2002
исходник работает нормально
2.0K
29 декабря 2002 года
yup
31 / / 03.12.2002
исходник работает нормально
2.0K
29 декабря 2002 года
yup
31 / / 03.12.2002
#include <windows.h>
#include <winsock2.h>

void debug_sock_error ();

int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) {

WSADATA WSAData;

int init_winsock_dll=WSAStartup(0x0202, &WSAData);

if(init_winsock_dll!=0) {
debug_sock_error();
return TRUE;
}

SOCKET srv_socket=socket(AF_INET,SOCK_STREAM,0);
if(srv_socket==INVALID_SOCKET) {
debug_sock_error();
return TRUE;
}

struct sockaddr_in srv_sockaddr;

srv_sockaddr.sin_family=AF_INET;
srv_sockaddr.sin_port=htons(27600);
srv_sockaddr.sin_addr.s_addr=INADDR_ANY;

int bind_socket=bind(srv_socket, (LPSOCKADDR)&srv_sockaddr, sizeof(srv_sockaddr));
//!!!!!!!!!!!!!
if(srv_socket==SOCKET_ERROR) { //zdes srv_socket, a dolgen bit bind_socket
debug_sock_error();
return TRUE;
}

int listen_sock=listen(srv_socket,5);
if(listen_sock==SOCKET_ERROR) {
MessageBox(NULL, "listen", "Error: WSAEACCES (10013)", MB_OK);
debug_sock_error();
return TRUE;
}

Sleep (10000);

closesocket (srv_socket);

WSACleanup ();
return (0);
}

void debug_sock_error () {
MessageBox (NULL, "Socket error", "Error", MB_OK);
}


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