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.