usar servidor pagina instalar inicio encuentra donde como c++ tcp winsock

c++ - pagina - servidor php



Cómo ejecutar un servidor en vivo win winsock? (2)

Así que podría ser una respuesta, pero tal vez tenga que usar otro puerto como sugirió Datenwolf.

Descubrí que no es posible enlazar con la dirección IP de mi ISP. Así que he reenviado el puerto que quiero usar y luego me conecto a la dirección IP de mi computadora, como se menciona aquí:

conectarse a una dirección IP en lugar de localhost?

Intenté eso, así que cambié el ipaddress en el código a:

//Prepare the sockaddr_in structure server.sin_addr.s_addr = inet_addr("192.168.178.93"); server.sin_family = AF_INET; server.sin_port = htons(50000);

Y luego cuando me conecto a 214.231.34.12 y al puerto 50000 con telnet, ¡la conexión funciona! Me pregunto si este es un resultado válido.

Así que quiero ejecutar un servidor en vivo en mi PC para conectarme y obtener información de otra persona. Pensé que podía permitir que la otra persona se conectara a mi dirección IP en un puerto que no se usaba. Entonces, por ejemplo, si mi dirección IP hipotética es 214.231.34.12 y el puerto 50000 y abro la conexión y le doy esta información a alguien, pueden conectarse a ella y enviarme información a través de TCP.

Pensé que podría usar este código:

// TCPClient.cpp : Defines the entry point for the console application. // #include "stdafx.h" #define _WINSOCK_DEPRECATED_NO_WARNINGS /* Live Server on port 50000 */ #include<io.h> #include<stdio.h> #include<winsock2.h> #pragma comment(lib,"ws2_32.lib") //Winsock Library int main(int argc, char *argv[]) { WSADATA wsa; SOCKET s, new_socket; struct sockaddr_in server, client; int c; char *message; printf("/nInitialising Winsock..."); if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) { printf("Failed. Error Code : %d", WSAGetLastError()); return 1; } printf("Initialised./n"); //Create a socket if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { printf("Could not create socket : %d", WSAGetLastError()); } printf("Socket created./n"); //Prepare the sockaddr_in structure server.sin_addr.s_addr = inet_addr("214.231.34.12"); server.sin_family = AF_INET; server.sin_port = htons(50000); //Bind if (bind(s, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) { printf("Bind failed with error code : %d", WSAGetLastError()); exit(EXIT_FAILURE); } puts("Bind done"); //Listen to incoming connections listen(s, 3); //Accept and incoming connection puts("Waiting for incoming connections..."); c = sizeof(struct sockaddr_in); while ((new_socket = accept(s, (struct sockaddr *)&client, &c)) != INVALID_SOCKET) { puts("Connection accepted"); //Reply to the client message = "Hello Client , I have received your connection. But I have to go now, bye/n"; send(new_socket, message, strlen(message), 0); } if (new_socket == INVALID_SOCKET) { printf("accept failed with error code : %d", WSAGetLastError()); return 1; } closesocket(s); WSACleanup(); return 0; }

Pero está fallando al enlazar la conexión. Todo este asunto de TCP y de winsocket es totalmente nuevo para mí y no entiendo cómo debería abordar esto de manera diferente. Sé que este código aún no está recibiendo información, es solo la conexión con la que trato de trabajar en este momento. ¿No es esta la manera correcta de configurar esto?

El enlace () falla con el error de socket de Windows 10049


Hay muchos obstáculos para establecer una conexión TCP a través de Internet:

  1. Internet en sí mismo: conexión defectuosa / inestable, ips dinámicos, etc.
  2. ISP: tal vez su ISP bloquea algunos puertos o ips
  3. enrutador: cortafuegos, problemas de cruce NAT, upnp, etc.
  4. SO: firewall de Windows, antivirus, puerto bloqueado / en uso
  5. SU APLICACIÓN: tal vez un error de código

Es un nuevo y completo enlace a PC a través de internet, el concepto es el mismo, pero impleméntelo ......