
23.08.2009, 12:22
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
вот рабочий код.
Я тут внес некоторую оптимизацию )
Теперь размер 1024 байта после компила )
Код:
format PE GUI 4.0
entry main
include 'win32a.inc'
section '.text' data readable writeable executable import
;--------------- IMPORT -------------------
library kernel32, 'kernel32.dll',\
wsock32, 'wsock32.dll'
include 'api\kernel32.inc'
include 'api\wsock32.inc'
;--------------- CODE -------------------
main:
invoke WSAStartup, 0101h, wdata
invoke socket, AF_INET, SOCK_STREAM, 6
mov [sock], eax
mov [saddr.sin_family], AF_INET
invoke htons, 80
mov [saddr.sin_port], ax
invoke inet_addr, ip
mov [saddr.sin_addr], eax
invoke connect, [sock], saddr, sizeof.sockaddr_in
invoke lstrlen, hello
invoke send, [sock], hello, eax, 0
invoke closesocket, [sock]
invoke ExitProcess, 0
;--------------- DATA -------------------
ip db '127.0.0.1', 0
hello db 'GET http://localhost/hello.php HTTP/1.0', 13, 10
db 'Host: localhost', 13, 10, 13, 10, 0
wdata WSADATA
saddr sockaddr_in
sock dd ?
Последний раз редактировалось slesh; 23.08.2009 в 12:25..
|
|
|

23.08.2009, 12:45
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
1) хм у меня вроде норм все было.
2) действительно))
собственно туплю  поставил обработку ошибок и нашел ошибку 10061 после вызова функции connect. посмотерл - на локалхост не заходит хотя сервер запущен. кароче сменил сервер на vertrigo (был easyphp). все норм работает.
а почему у тебя в пинге ReplySize = 92? ведь размер структуры = 24 а буфера 32,
Последний раз редактировалось e4key; 23.08.2009 в 12:50..
|
|
|

23.08.2009, 12:50
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
ого 1 кб!  -2 секции - 1 кб  ушел читать твою статью про оптимизацию прог. на fasm  спасибо!
|
|
|

23.08.2009, 13:14
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
насчет 92 - это просто ошибка. когда переписывал.
потому как включил буфер ответа в саму структуру, но забыл вычесть размер.
ICMP_ECHO_REPLY - 28 байт + 32 буфер = 60 байт
60 + точно я забыл удрать +32 какраз и вышло 92 )
Да и код писал очень давно и криво, так что могут быть косяки всякие )
|
|
|

23.08.2009, 13:51
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
ну а в моем случае это будет размер ICMP_ECHO_REPLY + PingBuf = 24 + 32 = 56?
структуру IP_OPTION_INFORMATION я не использую.
но тогда после выполнения функции возвращается ошибка 11001.
может следует взять с запасом или я ошибся в расчетах?
Последний раз редактировалось e4key; 23.08.2009 в 13:58..
|
|
|

23.08.2009, 22:44
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
ни у кого нет примера серверной программы с использованием winapi? хотелось бы простой примерчик, например, выводящий полученную от клиента команду в messagebox'e.
нашел немало такого, но не выходит перевести на асм
спасибо 
|
|
|

24.08.2009, 10:40
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
Вот что-то написал, но увы не работает:
Код:
format PE GUI 4.0
entry main
include 'win32a.inc'
section '.data' data readable writeable
hello db 'hello', 0
error db 'Error: %d', 0
ip db '127.0.0.1', 0
wdata WSADATA
laddr sockaddr_in
caddr sockaddr_in
sock dd ?
csock dd ?
temp rb 15
bufer rb 1024
section '.code' code readable executable
main:
invoke WSAStartup, 0101h, wdata
invoke socket, AF_INET, SOCK_STREAM, 6
mov [sock], eax
mov [laddr.sin_family], AF_INET
invoke htons, 6112
mov [laddr.sin_port], ax
invoke inet_addr, ip
mov [laddr.sin_addr], eax
invoke bind, [sock], laddr, sizeof.sockaddr_in
cmp eax, 0
jne .error
invoke listen, [sock], 0
.while:
invoke accept, [sock], caddr, sizeof.sockaddr_in
mov [csock], eax
invoke recv, [csock], bufer, 1024, 0
invoke lstrcmp, bufer, hello
cmp eax, 0
jne .while
invoke MessageBox, 0, hello, hello, 0
jmp .while
.error:
invoke GetLastError
invoke wsprintf, temp, error, eax
invoke MessageBox, 0, temp, hello, MB_OK
invoke ExitProcess, 0
section '.idata' import data readable
library kernel32, 'kernel32.dll',\
user32, 'user32.dll',\
wsock32, 'wsock32.dll'
include 'api\kernel32.inc'
include 'api\user32.inc'
include 'api\wsock32.inc'
|
|
|

24.08.2009, 11:08
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
2 e4key TCP/IP клиент, сервер
вот на fasm аналоги тех моих процедур recvall и sendall
Код:
; TCP/IP функции для правильной работы клиента
;отправить все
;ecx - len
;ebx - &buf
proc sendall
local total dd 0
.w:
cmp [total],ecx
jnl .exit
add ebx,[total]
sub ecx,[total]
invoke send,[sock],ebx,ecx,0
inc eax
jz .exit
dec eax
add [total],eax
jmp .w
.exit:
ret
endp
;принять все
;ecx - len
;ebx - &buf
proc recvall
local total dd 0
.w:
cmp [total],ecx
jnl .exit
add ebx,[total]
sub ecx,[total]
invoke recv,[sock],ebx,ecx,0
inc eax
jz .exit
dec eax
add [total],eax
jmp .w
.exit:
ret
endp
INFO
http://www.insidepro.com/kk/006/006r.shtml - очень советую по WinSock
Последний раз редактировалось Gar|k; 24.08.2009 в 11:18..
|
|
|

26.08.2009, 01:17
|
|
Новичок
Регистрация: 05.06.2009
Сообщений: 27
Провел на форуме: 270394
Репутация:
12
|
|
Как у скомпилированного файла asm сделать свою иконку , если компилирую MASM32
|
|
|

26.08.2009, 09:15
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
А кто тебе не дает подключить ресурс в исходник на стадии программирования?
Или нет исхоника?
ПОпробуй воспользоваться прогами типа Resource WorkShop который идет с Delphi или любой другой редактор ресурса. Или тебе нужно программно добавить иконку?
Если программно то есть апишки для этого типа UpdateResource
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Вопросы для новичков! (faq)
|
PEPSICOLA |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
92 |
14.05.2010 17:59 |
|
ОС с нуля
|
z01b |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
36 |
03.07.2008 15:30 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|