Искал ошибку довольно долго не подумайте что сразу сюда написал)
Через дебагер проверял, данные по сокету получает, все параметры вроде подходят, да и точно такой-же способ вывода текста я использую в сервере но там он работает...
PS: Вот все время какие-то проблемы с этим WriteConsole уже устал)...
Format PE GUI 4.0
include "win32ax.inc"
proc Thread_Receiv arg1
.p0:
invoke ReadConsole,[STDI],buff_send,4096,lenght,0
mov eax,0
mov ax,[lenght]
invoke send,[socket_client],buff_send,eax,0
jmp .p0
ret
endp
connect_socket:
invoke WSAStartup,0202h,WSA
cmp eax,00
jz .p0
invoke WriteConsole,[STDO],err3,19,0,0
jmp $
.p0:
invoke socket,2,1,0
cmp eax,-1
jnz .p1
invoke WriteConsole,[STDO],err1,22,0,0
jmp $
.p1:
mov [socket_client],eax
invoke connect,eax,addr,sizeof.sockaddr_in
cmp eax,0
jnz error
ret
input_output:
invoke WriteConsole,[STDO],mes1,51,0,0
invoke ReadConsole,[STDI],buff,255,lenght,0
xor ebx,ebx
mov bx,[lenght]
add ebx,buff
mov byte [ebx-1],0
mov byte [ebx-2],0
invoke inet_addr,buff
mov [addr.sin_addr.ip],eax
ret
error:
invoke WriteConsole,[STDO],err2,33,0,0
jmp $
start:
invoke AllocConsole
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [STDO],eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov [STDI],eax
call input_output
call connect_socket
invoke CreateThread,0,0,Thread_Receiv,0,0,thread
.p01:
invoke recv,[socket_client],buffer,4096,0
push 0
push 0
push eax
push buffer
push [STDO]
mov eax,0
call [WriteConsoleA]
;; invoke WriteConsoleA,[STDO],buffer,eax,0,0 ;; ВОТ ТУТ НЕ РАБОТАЕТ сверху эта же функция только без invoke
jmp .p01
.end start
mes1 db ' TCP-Client by ASMcoder',10,13,'IP:'
mes2 db 'Port:'
err1 db 'Create socket error!',10,13
err2 db 'Connect socket error!',10,13
err3 db 'WSAStartup error!',10,13
struc WSAdata
{
.wVersion dw ?
.wHighVersion dw ?
.szDescriotion db 257 dup (?)
.szSystemStatus db 129 dup (?)
.iMaxSockets dw ?
.iMaxUdpDg dw ?
.lpVendorInfo dd ?
}
struc sockaddr_in
{
.sin_family dw 2
.sin_port dw 1300
.sin_addr IP
.sin_zero db 8 dup (?)
}
struc IP
{
.ip:
.a_b1 db ?
.a_b2 db ?
.a_b3 db ?
.a_b4 db ?
}
socket_client dd 0
thread db 0
lenght dw 0
STDO dd 0
STDI dd 0
addr sockaddr_in
WSA WSAdata
null dd 0
buff db 512 dup(0)
buff_send db 4096 dup(0)
buffer db 4096 dup(0)
Так-же не знаю может будет полезно
сервер:
Format PE GUI 4.0
include "win32ax.inc"
proc Thread_Receiv arg1
.p0:
invoke ReadConsole,[STDI],buff_send,4096,lenght,0
invoke send,[socket_client],buff_send,eax,0
jmp .p0
ret
endp
connect_socket:
invoke WSAStartup,0202h,WSA
cmp eax,00
jz .p0
invoke WriteConsole,[STDO],err3,19,0,0
jmp $
.p0:
invoke socket,2,1,0
cmp eax,-1
jnz .p1
invoke WriteConsole,[STDO],err1,22,0,0
jmp $
.p1:
mov [socket_server],eax
invoke bind,[socket_server],addr,sizeof.sockaddr_in
invoke listen,[socket_server],5
mov eax,sizeof.sockaddr_in
mov [lenght_addr],eax
invoke accept,[socket_server],addr_client,lenght_addr
mov [socket_client],eax
invoke WriteConsole,[STDO],mes1,19,0,0
ret
error:
invoke WriteConsole,[STDO],err2,33,0,0
jmp $
start:
invoke AllocConsole
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [STDO],eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov [STDI],eax
call connect_socket
invoke CreateThread,0,0,Thread_Receiv,0,0,thread
.p01:
invoke recv,[socket_client],buffer,4096,0
push 0
push 0
push eax
push buffer
push [STDO]
mov eax,0
call [WriteConsoleA]
jmp .p01
.end start
mes1 db 'Client connected!',10,13
err1 db 'Create socket error!',10,13
err2 db 'Connect socket error!',10,13
err3 db 'WSAStartup error!',10,13
struc WSAdata
{
.wVersion dw ?
.wHighVersion dw ?
.szDescriotion db 257 dup (?)
.szSystemStatus db 129 dup (?)
.iMaxSockets dw ?
.iMaxUdpDg dw ?
.lpVendorInfo dd ?
}
struc sockaddr_in
{
.sin_family dw 2
.sin_port dw 1300
.sin_addr IP
.sin_zero db 8 dup (?)
}
struc IP
{
.ip:
.a_b1 db ?
.a_b2 db ?
.a_b3 db ?
.a_b4 db ?
}
socket_client dd 0
socket_server dd 0
thread db 0
lenght dw 0
lenght_addr dd 0
STDO dd 0
STDI dd 0
addr sockaddr_in
addr_client sockaddr_in
WSA WSAdata
buff db 512 dup(0)
buff_send db 4096 dup(0)
buffer db 4096 dup(0)