Автор
|
Тема: SPX в WinSockets
|
ServerMouse |
опубликован 11-09-2001 15:40 MSK
Hi ALL!Никак не могу установить конект по SPX между дос клиентом и win32 сервером. У сервера делаю так: sock = socket(AF_IPX,SOCK_STREAM,NSPROTO_SPX); // Заполняем структуру pSockAddr bind(sock,(PSOCKADDR)pSockAddr,sizeof(SOCKADDR_IPX); WSAAsyncSelect(sock,m_hWnd,msg,Event); Дос клиент неконектится по таймауту. Всё на локальной машине.
|
Emerald
|
опубликован 11-09-2001 20:29 MSK
Проверь адреса. Ведь ДОС VLM (насколько я помню) использует 14 цифр -> ############### для NODE ADDRESS, а вторая Win функция - 12 (IP). Может я не прав, но давно я с этим дела не имел...
|
ServerMouse
|
опубликован 12-09-2001 10:10 MSK
Нашёл. Глупая ошибка. Просто надо было сделать listen(sock,SOMAXCONN); Теперь это работает, но как всегда не работает что-то другое... ;-)Клиент прекрасно конектится, я ловлю событие FD_ACCEPT : SOCKADDR_IPX addr; PSOCKADDR_IPX pSockAddr=&addr; int len=sizeof(addr); MainSock=accept(SndSock,(PSOCKADDR)pSockAddr,&len); WSAAsyncSelect(MainSock,m_hWnd,msg,FD_READ|FD_CONNECT); Правильно ли я всё делаю с точки зрения идеологии сокетов вообще? Потому что обработчик событий от MainSock не вызывается, несмотря на то что клиент шлёт по установившемуся соединению данные.
|
ServerMouse
|
опубликован 12-09-2001 10:39 MSK
Да, и ещё, почему не получается установить событие от сокета на уже существующее. Т.е. так что бы несколько сокетов посылали окну одно и то же сообщение (WM_USER+1)? Получается Out of memory. |
ServerMouse
|
опубликован 12-09-2001 12:38 MSK
2Emerald : На самом деле все используют для NodeAddress 6 байт. К IP никакого отношения -- SPX базируется на IPX. Может это MAC-адрес? |
Emerald
|
опубликован 12-09-2001 15:19 MSK
Я могу ошибаться - давно не работал с Netware. Конечно, NODE ADDRESS = MAC в системе IPX/SPX протокола. Что-то я здесь попутал... |