Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de sockets de Windows: código de error de enlace -1, ¿cómo solucionarlo?

Programación de sockets de Windows: código de error de enlace -1, ¿cómo solucionarlo?

Consulte lo siguiente:

SOCKET

server_socket

SOCKADDR_IN

internet_addr;

int

ret,

error,

addr_len

PROXY_SOCK_PARAM_T

*_param; /p >

HANDLE

hThread;

unsigned

int

thid;

//

Crear

socket

server_socket

=

socket(AF_INET,

SOCK_STREAM,

IPPROTO_TCP);

if(server_socket

==

INVALID_SOCKET)

/*

Llamar

socket

Falló,

Devolver

INVALID_SOCKET,

Llamar

p>

WSAGetLastError()

Puedes ver el código de error

*/

{

error

=

WSAGetLastError();

//

TODO:

Manejo de errores

retorno

0;

}

//

Realizar

Socket

Enlazar

internet_addr.sin_family

=

PF_INET;

internet_addr.sin_port

=

htons(PROXY_SERVER_PORT);

internet_addr.sin_addr.s_addr

=

htonl(INADDR_ANY);

ret

=

bind(server_socket,

(SOCKADDR

*)amp; internet_addr,

sizeof(internet_addr));

if(ret

!=

0)

/*

bind

Devuelve con éxito

0.

En caso contrario, devuelve

SOCKET_ERROR,

Llamar

WSAGetLastError()

Puedes ver el código de error

*/

{

error

=

WSAGetLastError();

closesocket(server_socket);

//

TODO:

Manejo de errores

return

0;

}

//

en

enchufe

Monitor encendido

>ret

=

escuchar(server_socket,

128);

/*

escuchar

Regresar exitosamente

0.

De lo contrario, regresar

SOCKET_ERROR,

Llamar

WSAGetLastError ()

Puedes ver el código de error

*/

if(ret

!=

0)

{

error

=

WSAGetLastError();

closesocket(server_socket);

//

TODO:

Manejo de errores

return

0;

}

std::cout

lt;lt;

"[PROXY-SERVR]

Puerto

5200

Inicio de escucha..."

lt;lt;

std::endl;

//

Recibir solicitudes de clientes

for(;;)

{

//

Organizar los datos pasados ​​al nueva estructura del hilo

_param

=

(PROXY_SOCK_PARAM_T

*)malloc(sizeof(PROXY_SOCK_PARAM_T));

_param-gt;server_socket

=

server_socket;

addr_len

=

sizeof(_param -gt ; client_addr);

_param-gt; client_socket

=

aceptar(

_param-gt; server_socket,

(SOCKADDR

*)amp; (_param-gt; client_addr),

amp (addr_len));

if(_param; -gt ;socket_cliente

==

SOCKET_INVALID)

{

error

=

WSAGetLastError();

//

TODO:

Manejo de errores

}

else

{

//

Crear hilo de trabajo

hThread

=

(HANDLE )_beginthreadex(NULL,

0,

server_work_thread,

(void

*)_param,

0,

amp; thid);

if(hThread

==

INVALID_HANDLE_VALUE)

{

free(_param);

}

else

{

CloseHandle(hThrea

d);

}

}

}