niknitrodeb@debian:~$ ./a.out 127.0.0.1 5050
127.0.0.1:5050
Socket creado
Conexion fallida. error: Connection refused
niknitrodeb@debian:~$ ./a.out "127.0.0.1" 5050
127.0.0.1:5050
Socket creado
Conexion fallida. error: Connection refused
niknitrodeb@debian:~$ ./a.out '127.0.0.1' 5050
127.0.0.1:5050
Socket creado
Conexion fallida. error: Connection refused
niknitrodeb@debian:~$
Ni con comillas simples, ni dobles ni sin ellas. Sin embargo si guardara puertos e ip dentro del main funciona; pero necesito que sea por paso de argumentos.
Saludos;)
PD: aquí tienes un trozo del servidor:
int main(int argc, char *argv[]) {
int listen_socket, cliente, rtn;
struct sockaddr_in server, clientinfo;
// const int PUERTO = 5050;
const int PUERTO;
PUERTO = atoi(argv[0]);
//SOCKET
listen_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (listen_socket == -1) {
perror("No se puede crear el socket");
return 1;
}
cout << "Socket creado\n";
//preparar la estructura sockaddr_in
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(PUERTO);
//BIND
rtn = bind(listen_socket, (struct sockaddr*)&server, sizeof(server));
if (rtn < 0) {
perror("Error en el bind");
return 1;
}
puts("Bind hecho");
//LISTEN
rtn = listen(listen_socket, 1); //1 es el maximo de conexiones a la vez
puts("Esperando conexiones entrantes");
/*if (rtn < 0) {
perror("Error en el listen");
return 1;
}*/
while (true) {
sockaddr client;
socklen_t c = sizeof(client);
//ACCEPT
cliente = accept(listen_socket, &client, &c);
if (cliente < 0) {
perror("Error en el accept");
return 1;
}
cout << "Conexion aceptada en el puerto " << server.sin_port << "\n";
fflush(stdout);
El cual abro antes y se queda:
niknitrodeb@debian:~$ ./server.out 5050
Socket creado
Bind hecho
Esperando conexiones entrantes
__________________________________________________________________________________________________________
EDITO: Le he hecho un cambio en el servidor y no me muestra el puerto bien... El cambio es el siguiente:
const int PUERTO = atoi(argv[0]); //Porque me daba error separado (supongo que por modificar una constante)
//Y bajo el listen he cambiado ese put por esto:
puts("Esperando conexiones entrantes en el puerto ");
cout << server.sin_port;
RESULTADO:
niknitrodeb@debian:~$ ./server.out 5050
Socket creado
Bind hecho
Esperando conexiones entrantes en el puerto
No me muestra el puerto. ¿Será que no lo toma bien de argv?
Salud