Сейчас на форуме: UniSoft, laslo, bartolomeo (+5 невидимых)

 eXeL@B —› Программирование —› Решил изучить сокеты. Фейл. Помогите, а?
Посл.ответ Сообщение

Ранг: 7.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 09 сентября 2011 21:51
· Личное сообщение · #1

Есть код:
.data
...
szIP db 11 dup(0),0
szHost db 'localhost',0
szRequest db 'GET /index.php HTTP/1.0', 10, 13,\
'Host: localhost',13,10,13,10,0

wsadata WSADATA
saddr sockaddr_in
...
.code
...
invoke socket,AF_INET,SOCK_STREAM,PF_NS
test eax,eax
je .QSocks
mov [hSocket],eax

invoke htons,PORT
mov [saddr.sin_family],AF_INET
mov word[saddr.sin_port],ax

invoke gethostbyname,szHost
test eax,eax
je .QSocks

mov eax,[eax+HOSTENT_IP]
mov eax,[eax]
mov [saddr.sin_addr],eax

invoke connect,[hSocket],saddr,sizeof.sockaddr_in

invoke lstrlen,szRequest
invoke send,[hSocket],szRequest,eax,0

invoke closesocket,[hSocket]
invoke HeapFree,[hHeap],0,[pURLBuff]
.QSocks:
jmp .finish
...

вроде все нужное дал. Вот.
Коннект возвращает ошибку WSAEADDRNOTAVAIL (А если вместо 'localhost' запросить 'google.com', то получается WSAETIMEDOUT). Собственно, локалхост резвится под денвером, поэтому коннект не должен ругаться. Но ругается В чем проблема? В сраном интернете примерно тот же код везде. Я уже чуть мышь не разуплотнил. А еще лучше, дайте пример на любом языке, который через эти же стандартные апи делает запрос на сервер.



Ранг: 7.9 (гость)
Активность: 0.010
Статус: Участник

Создано: 09 сентября 2011 22:06
· Личное сообщение · #2

Я дебил.
mov eax,[eax]
invoke inet_ntoa,dword[eax]
invoke inet_addr,eax
mov [saddr.sin_addr],eax
Мне не нравится этот код, но все правильно же работает. Потом матчасть повнимательнее почитаю и перепилю всем спасибо, тему закрываю


 eXeL@B —› Программирование —› Решил изучить сокеты. Фейл. Помогите, а?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати