[SOLUCIONADO] Socket y asm

Iniciado por proxy_lainux, Julio 16, 2013, 02:29:06 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 16, 2013, 02:29:06 AM Ultima modificación: Mayo 23, 2014, 07:25:12 PM por blackdrake
hola

estoy tratando de aprender a usar sockets con nasm, pero tengo una duda, cuando uso WSAStartup hago un printf y me sale 0, lo que me imagino que esta bien, despues inicio socket() y pongo sus parametros, AF_INET, SOCK_STREAM, IPPROTO_TCP,pero los pongo por su valor (2,1,6), y hago un printf para revisar el resultado.

al principio me salia "-1", con lo que me imagino que tenia error, pero luego lo modifique y ahora ya no me da un resultado negativo, me da positivo, pero en consola me aparece "80", hice un seguimiento con ollydbg y me aparece 84, lo que quisiera saber es si es correcto ese numero en la funcion socket() o me tiene que aparecer "0", porque tampoco me aparece ningun "violacion de acceso" con lo que me imagno que por lo menos el codigo esta bien porque no crashea

a lo que me refiero con lo de "80" o "0" y "-1" es como cuando en C ponemos

if((socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1){
exit(1);
}

si pusiera un printf para ver el resultado de socket y me aparece "80", estaria mal?, o significa que voy bien?, bueno hablando en asm en este sentido

y posiblemente el cambio de 80 y 84 es porque en el printf le puse "%d" y ollydbg talvez lo ve diferente


EDITADO

estuve haciendo el programa en C e hice un seguimiento con ollydbg, puse un printf y me aparece 90 decimal tanto en olly como en el printf

entonces creen que este correcto que me aparezca 84 decimal  en ollydbg y 80 en el printf en nasm?, acaso sera por algo de la compilacion?

Hola,

Directamente de la MSDN:
CitarIf no error occurs, socket returns a descriptor referencing the new socket. Otherwise, a value of INVALID_SOCKET is returned, and a specific error code can be retrieved by calling WSAGetLastError.

Lo que te dice que o bien el valor de retorno es INVALID_SOCKET o bien es el descriptor de referencia al socket creado.

Saludos.