Autor
|
Tema: Comprobar conexion a internet desde c (Leído 4,482 veces)
|
iberodjmx@hotmail.es
Desconectado
Mensajes: 2
|
Buenas noches he estado buscadole y la verdad no he logrado mucho soy nuevo en el foro y a veces un poco de ayuda se agradece, sucede que necesito programar un cliente en c que pueda comprobar la conexion a un sitio web en internet por algun puerto ej. 80, el host donde se ejecutara el cliente puede que tenga o no conexion por proxy por lo que de manera opcional se pondriasn en un archivo datos como son host proxy, puerto, usuario y contrasenia, si alguin pudiera orientarme en como poder lograr esto.
Como dato adicional estoy trabajando en un entorno windows 7. Saludos y desde ya gracias
|
|
|
En línea
|
|
|
|
anonimo12121
|
system("ping www.google.com -n 1000");
Los puertos no se pero con esto sabes el ping de alguna ip
|
|
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
para hacer eso deberias aprender sobre sockets. no uso windows, pero quizas este codigo te deje un idea de lo que hay que hacer: #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdlib.h> #define PORT 80 #define IP "127.0.0.1" void error(char* message); int main() { int sockfd; struct sockaddr_in serverAddr; struct in_addr *pServerAddr=NULL; //estructura del server memset(&serverAddr , 0, sizeof(serverAddr )); serverAddr.sin_port=htons(PORT); serverAddr.sin_family=AF_INET; pServerAddr=&(serverAddr.sin_addr); inet_aton(IP, pServerAddr); //se declara el socket sockfd=socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR: No se pudo abrir el socket.\n"); //se conecta con el servidor if (connect(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) error("ERROR: No se pudo conectar con el servidor.\n"); printf("Conexion establecida con %s por el puerto %d\n", IP , PORT ); //... close(sockfd); return 0; } void error(char* message) { }
un saludo! edito: para decir que en el caso que uses este codigo y no tengas un servidor web montado en tu ordenador, la salida del programa sera: ERROR: No se pudo conectar con el servidor. : Connection refused
o algo parecido. en cambio, si por ejemplo pones la ip de google.es (173.194.34.23), la salida del programa sera que se ha establecido conexion con el servidor. asi que te serviria para saber si una direccion ip tiene montada un servidor web o no.
|
|
« Última modificación: 5 Octubre 2012, 17:05 pm por xiruko »
|
En línea
|
|
|
|
iberodjmx@hotmail.es
Desconectado
Mensajes: 2
|
Lesc omparto el codigo de lo que ya tengo: #include <stdio.h> #include <stdlib.h> #include <windows.h>
char SendBuff[512],RecvBuff[512];
int main(int argc, char *argv[]){ WSADATA wsaData; SOCKET conn_socket; struct sockaddr_in server; struct hostent *hp; int resp; //Inicializamos la DLL de sockets resp=WSAStartup(MAKEWORD(1,0),&wsaData); if(resp){ printf("Error al inicializar socket\n"); getchar();return -1; }
//Obtenemos la IP del servidor... en este caso // localhost indica nuestra propia máquina... hp=(struct hostent *)gethostbyname("10.x.x.x");
if(!hp){ printf("No se ha encontrado servidor...\n"); getchar();WSACleanup();return WSAGetLastError(); }
// Creamos el socket... conn_socket=socket(AF_INET,SOCK_STREAM, 0); if(conn_socket==INVALID_SOCKET) { printf("Error al crear socket\n"); getchar();WSACleanup();return WSAGetLastError(); } memset(&server, 0, sizeof(server)) ; memcpy(&server.sin_addr, hp->h_addr, hp->h_length); server.sin_family = hp->h_addrtype; server.sin_port = htons(3128);
// Nos conectamos con el servidor... if(connect(conn_socket,(struct sockaddr *)&server,sizeof(server)) == SOCKET_ERROR){ printf("Fallo al conectarse con el servidor\n"); closesocket(conn_socket); WSACleanup();getchar();return WSAGetLastError(); } printf("Conexión establecida con: %s\n", inet_ntoa(server.sin_addr)); strcpy(SendBuff,"connect"); //Enviamos y recibimos datos... printf("Enviando Mensaje... \n"); send(conn_socket,SendBuff,sizeof(SendBuff),0); printf("Datos enviados: %s \n", SendBuff); printf("Recibiendo Mensaje... \n"); recv(conn_socket,RecvBuff, sizeof(RecvBuff), 0); printf("Datos recibidos: %s \n", RecvBuff); getchar(); // Cerramos el socket y liberamos la DLL de sockets closesocket(conn_socket); WSACleanup(); return EXIT_SUCCESS; }
y con el cual lo que he logrado establecer la conexion con el servidor sin embargo una vez conectado hay que hacer una autenticacion en caso de que exista, mi pregunta es como consigo eso con c++ ya que como podran ver es codigo c++. En la parte que dice: printf("Enviando Mensaje... \n"); send(conn_socket,SendBuff,sizeof(SendBuff),0); Creo que en la instruccion send es donde tendria que ir alguna instruccion como login: nombredeusuario \n password: micontrasenia y ahora si hacer peticiones de conexion a algun sitio web, la idea seria lograr la autenticacion una vez conectados al servidor proxy. Saludos y gracias por sus aportaciones,
|
|
|
En línea
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
Lesc omparto el codigo de lo que ya tengo: #include <stdio.h> #include <stdlib.h> #include <windows.h>
char SendBuff[512],RecvBuff[512];
int main(int argc, char *argv[]){ WSADATA wsaData; SOCKET conn_socket; struct sockaddr_in server; struct hostent *hp; int resp; //Inicializamos la DLL de sockets resp=WSAStartup(MAKEWORD(1,0),&wsaData); if(resp){ printf("Error al inicializar socket\n"); getchar();return -1; }
//Obtenemos la IP del servidor... en este caso // localhost indica nuestra propia máquina... hp=(struct hostent *)gethostbyname("10.x.x.x");
if(!hp){ printf("No se ha encontrado servidor...\n"); getchar();WSACleanup();return WSAGetLastError(); }
// Creamos el socket... conn_socket=socket(AF_INET,SOCK_STREAM, 0); if(conn_socket==INVALID_SOCKET) { printf("Error al crear socket\n"); getchar();WSACleanup();return WSAGetLastError(); } memset(&server, 0, sizeof(server)) ; memcpy(&server.sin_addr, hp->h_addr, hp->h_length); server.sin_family = hp->h_addrtype; server.sin_port = htons(3128);
// Nos conectamos con el servidor... if(connect(conn_socket,(struct sockaddr *)&server,sizeof(server)) == SOCKET_ERROR){ printf("Fallo al conectarse con el servidor\n"); closesocket(conn_socket); WSACleanup();getchar();return WSAGetLastError(); } printf("Conexión establecida con: %s\n", inet_ntoa(server.sin_addr)); strcpy(SendBuff,"connect"); //Enviamos y recibimos datos... printf("Enviando Mensaje... \n"); send(conn_socket,SendBuff,sizeof(SendBuff),0); printf("Datos enviados: %s \n", SendBuff); printf("Recibiendo Mensaje... \n"); recv(conn_socket,RecvBuff, sizeof(RecvBuff), 0); printf("Datos recibidos: %s \n", RecvBuff); getchar(); // Cerramos el socket y liberamos la DLL de sockets closesocket(conn_socket); WSACleanup(); return EXIT_SUCCESS; }
y con el cual lo que he logrado establecer la conexion con el servidor sin embargo una vez conectado hay que hacer una autenticacion en caso de que exista, mi pregunta es como consigo eso con c++ ya que como podran ver es codigo c++. En la parte que dice: printf("Enviando Mensaje... \n"); send(conn_socket,SendBuff,sizeof(SendBuff),0); Creo que en la instruccion send es donde tendria que ir alguna instruccion como login: nombredeusuario \n password: micontrasenia y ahora si hacer peticiones de conexion a algun sitio web, la idea seria lograr la autenticacion una vez conectados al servidor proxy. Saludos y gracias por sus aportaciones, Diria que es codigo C, no C++... Y para autentificarte supongo que debe haber un protocolo o algo... Saludos.
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Conexión a internet con Linux desde Wifislax ????
Wireless en Linux
|
killo25
|
0
|
1,864
|
11 Julio 2010, 18:41 pm
por killo25
|
|
|
Duda: Conexion a escritorio remoto de win desde Internet
Redes
|
Ahm_Shere
|
3
|
4,177
|
2 Octubre 2011, 11:45 am
por Ahm_Shere
|
|
|
Problemas de conexión a Internet desde VirtualBox
Redes
|
carlos8suarez
|
4
|
7,964
|
2 Abril 2012, 00:03 am
por adriandu
|
|
|
Comprobar conexión a internet en C++?
Programación C/C++
|
andrecid
|
1
|
2,618
|
17 Octubre 2015, 20:59 pm
por ThunderCls
|
|
|
Problema de conexión a Internet desde Wi-Fi en una laptop
Hardware
|
LuisC24
|
0
|
2,038
|
27 Diciembre 2022, 19:18 pm
por LuisC24
|
|