IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Программирование сокетов. (http://www.imho.ws/showthread.php?t=61903)

TRiPLE 16.06.2004 13:53

Программирование сокетов.
 
Пытаюсь разобраться с сабжем по инфе с firststeps.ru. С небольшими изменениями делал все как там описано, но на стадии привязки сокета к имени(адресу) он ругается кодом ошибки 10038, мол, я пытаюсь вместо сокета функции bind() передать что-то другое ("An operation was attempted on something that is not a socket"). Самое странное, что непосредственно перед этим абсолютно без ошибок создается сам сокет и с указателем на него ничего не делается. Вот так это выглядит:
Код:

SOCKADDR_IN socketaddr;
 socketaddr.sin_family=AF_INET;
 socketaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
 socketaddr.sin_port = PORT_ADDR;
 if (bind(servsocket,(LPSOCKADDR)&socketaddr,sizeof(socketaddr)) == SOCKET_ERROR)
 {
//дальше просто сообщения об ошибках...

Помогите, плз, выловить баг.

chesnok 16.06.2004 15:07

Поподробнее можно? Какой компилятор, что в исходниках (объявления переменой servsocket и т.д.).
btw. на сколько я понимаю, такой сокет будет слушать только локалхост (в сокаддре надо было прописать s_addr = INADDR_ANY)

TRiPLE 16.06.2004 15:44

C++ Builder 6. Про локальный адрес прослушивания - это пока как заглушка стоит, потом прога тоже буде слушать только определенный адрес скорее всего. А сам сокет сделан вот так:
Код:

SOCKET servsocket;
servsocket = socket(PF_INET,SOCK_STREAM,0);


chesnok 16.06.2004 16:16

а по-моему надо:
Код:

servsocket = socket(AF_INET, SOCK_STREAM, 0);

TRiPLE 16.06.2004 17:34

Дико извиняюсь, ошибка как всегда была нелепой. В функции, где я создавал сокет забыл потереть функцию его закрытия. В любом случае, огромное спасибо за внимание к проблеме! :молись:
PS: Посмотрел в winsock.h, там написано PF_INET = AF_INET... вот.


Часовой пояс GMT +4, время: 18:03.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.