Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2011, 16:30   #1
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию Работа с WinSock

Решил попробовать свои силы и попытаться переписать сишный TCP-сервер Криса на асм.

В итоге, из-за малой образованности, не получается перевести на асм следующие вещи:

Код:
     while ((client_socket = accept(mysocket, (sockaddr *)&client_addr, &client_addr_size)))
     {
         DWORD thID;
         CreateThread(NULL, NULL, SexToClient, &client_socket, NULL, &thID);
     }
Код:
DWORD WINAPI SexToClient(LPVOID client_socket)
 {
     SOCKET my_sock;
     my_sock = ((SOCKET *)client_socket)[0];
     char buff[20 * 1024];
     int bytes_recv;
     while ((bytes_recv = recv(my_sock, &buff[0], sizeof(buff), 0)) &&
     bytes_recv != SOCKET_ERROR)
     MessageBox(0,buff,0,0);
     // закрываем сокет
     closesocket(my_sock);
     return 0;
 }
Собственно проблему составляют циклы WHILE. Когда переписываю их на асм, программа уходит в бесконечный цикл.
Помогите, кому не лень

Код:
.386
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\wsock32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\wsock32.lib

SexToClient PROTO       :DWORD

.data
    Error               db "Ошибка создания сокета",0
    Good                db "Ожидание подключений",0
    Caption             db "Работа с WinSock",0
    wsa                 WSADATA <>
    hSocket             SOCKET ?
    local_addr          sockaddr_in <>
    client_socket       SOCKET SOCKET_ERROR    
    client_addr         sockaddr_in <>
    ;ThreadId            DD ?
    ;BUF_LEN             EQU 1024 
    ;buff                DB BUF_LEN+1 dup(?)
    ;bytes_recv          DD ?
.code
    start:

        INVOKE WSAStartup, 202h, addr wsa
            .IF (EAX > 0)
                JMP JError
            .ELSE
                INVOKE socket, AF_INET, SOCK_STREAM, 0
                .IF (EAX < 0) 
                    JMP JError
                .ELSE
                    MOV hSocket, EAX
                    MOV local_addr.sin_family, AF_INET
                    INVOKE htons, 6677
                    MOV local_addr.sin_port, AX
                    MOV local_addr.sin_addr, EAX
                    INVOKE bind, hSocket, addr local_addr, sizeof local_addr
                    .IF (EAX == 0)
                        JMP JError
                    .ELSE
                        INVOKE listen, hSocket, 100h
                        .IF (EAX == 0)
                            JMP JError
                        .ELSE
                            INVOKE MessageBox, 0, addr Good, addr Caption, MB_OK
                            ;JMP JExit
                            ;?
                        .ENDIF
                    .ENDIF    
                .ENDIF
            .ENDIF

            JError:
                INVOKE MessageBox, 0, addr Error, addr Caption, MB_OK
            JExit:
                INVOKE ExitProcess, 0

     SexToClient PROC sock : DWORD
        ;?
     SexToClient ENDP
           
     end start

Последний раз редактировалось hiho; 28.04.2011 в 16:36.
hiho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с BlueTooth через WinSock. Пепел Феникса Win Api 4 11.11.2010 21:28
WinSock ImmortalAlexSan Работа с сетью в Delphi 7 06.06.2010 22:41
WinSock profi Win Api 8 11.01.2010 21:13
WinSock Killbrum Win Api 1 18.10.2009 15:15
работа с WinSock Agasfer Работа с сетью в Delphi 1 13.02.2008 18:54