HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 23.08.2009, 12:22
slesh
Познавший АНТИЧАТ
Регистрация: 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..
 
Ответить с цитированием

  #2  
Старый 23.08.2009, 12:45
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме:
71052

Репутация: 5
По умолчанию

1) хм у меня вроде норм все было.
2) действительно))

собственно туплю поставил обработку ошибок и нашел ошибку 10061 после вызова функции connect. посмотерл - на локалхост не заходит хотя сервер запущен. кароче сменил сервер на vertrigo (был easyphp). все норм работает.

а почему у тебя в пинге ReplySize = 92? ведь размер структуры = 24 а буфера 32,

Последний раз редактировалось e4key; 23.08.2009 в 12:50..
 
Ответить с цитированием

  #3  
Старый 23.08.2009, 12:50
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме:
71052

Репутация: 5
По умолчанию

ого 1 кб! -2 секции - 1 кб ушел читать твою статью про оптимизацию прог. на fasm спасибо!
 
Ответить с цитированием

  #4  
Старый 23.08.2009, 13:14
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

насчет 92 - это просто ошибка. когда переписывал.
потому как включил буфер ответа в саму структуру, но забыл вычесть размер.
ICMP_ECHO_REPLY - 28 байт + 32 буфер = 60 байт
60 + точно я забыл удрать +32 какраз и вышло 92 )
Да и код писал очень давно и криво, так что могут быть косяки всякие )
 
Ответить с цитированием

  #5  
Старый 23.08.2009, 13:51
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме:
71052

Репутация: 5
По умолчанию

ну а в моем случае это будет размер ICMP_ECHO_REPLY + PingBuf = 24 + 32 = 56?
структуру IP_OPTION_INFORMATION я не использую.

но тогда после выполнения функции возвращается ошибка 11001.

может следует взять с запасом или я ошибся в расчетах?

Последний раз редактировалось e4key; 23.08.2009 в 13:58..
 
Ответить с цитированием

  #6  
Старый 23.08.2009, 22:44
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме:
71052

Репутация: 5
По умолчанию

ни у кого нет примера серверной программы с использованием winapi? хотелось бы простой примерчик, например, выводящий полученную от клиента команду в messagebox'e.

нашел немало такого, но не выходит перевести на асм

спасибо
 
Ответить с цитированием

  #7  
Старый 24.08.2009, 10:40
e4key
Новичок
Регистрация: 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'
 
Ответить с цитированием

  #8  
Старый 24.08.2009, 11:08
Gar|k
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #9  
Старый 26.08.2009, 01:17
maptime
Новичок
Регистрация: 05.06.2009
Сообщений: 27
Провел на форуме:
270394

Репутация: 12
По умолчанию

Как у скомпилированного файла asm сделать свою иконку , если компилирую MASM32
 
Ответить с цитированием

  #10  
Старый 26.08.2009, 09:15
slesh
Познавший АНТИЧАТ
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.