На протяжении этой части:
invoke send, socket,addr USER, 100, 0
.if eax==SOCKET_ERROR
push MB_OK
push offset capt
push offset txt2
push 0
call MessageBoxA
invoke ExitProcess, NULL
.else
invoke send, socket,addr NICK, 100, 0
invoke send, socket,addr CHANNEL, 100, 0
там, где у вас есть «сокет», вы намеревались иметь «носок» - как есть, я полагаю, что он использует адрес (или, возможно, первое слово) функции socket
вместо значения сокета, которое вы сохранили sock
.
Если вы не возражаете против моего высказывания, я думаю, что код - это беспорядок. Чистя это немного, я получил это:
.code
show_error proc caption:ptr byte, err_txt:ptr byte
invoke WSAGetLastError
mov ErrorCode, eax
invoke MessageBoxA, MB_OK, caption, err_txt, 0
ret
show_error endp
main proc
invoke WSAStartup, 101h,addr wsadata
.if eax==0 ; An error occured if eax != 0, because there's no return value for this api, if there's return, there's an error
invoke socket,AF_INET,SOCK_STREAM,0 ; Create a stream socket for internet use
.if eax!=INVALID_SOCKET
mov sock,eax
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
;Now we have a socket ready for use, we still have to be able to connect to somewere though...
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
mov sin.sin_family, AF_INET
invoke htons, Port ; convert port number into network byte order first
mov sin.sin_port,ax ; note that this member is a word-size param.
invoke gethostbyname, addr hostname
mov eax,[eax+12] ; move the value of h_list member into eax
mov eax,[eax] ; copy the pointer to the actual IP address into eax
mov eax,[eax] ; copy IP address into eax
mov sin.sin_addr,eax
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
;Now That's done we can connect to a site! (an irc channel in this case)
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
invoke connect, sock, addr sin, sizeof sin
.if eax!=SOCKET_ERROR
invoke send, sock, addr USER, 100, 0
.if eax!=SOCKET_ERROR
invoke send, sock, addr NICK, 100, 0
invoke send, sock, addr CHANNEL, 100, 0
.else
invoke show_error, offset capt, offset txt2
.endif
.else
invoke show_error, offset capt, offset txt2
.endif
.else
invoke show_error, offset capt, offset txt1
.endif
.else
invoke show_error, offset capt, offset txt
.endif
invoke ExitProcess, 0
main endp
end main