C/Visual C - Sockets

 
Vista:

Sockets

Publicado por Sergio (1 intervención) el 05/08/2003 17:38:07
Amigos :
debo realizar un programa en "C" para mi test que debe leer a través del teclado el numero del puerto y con la función getprotobyname debo imprimir por pantalla.
me orientan, gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cómo leer un número de puerto y usar `getprotobyname` en C

Publicado por Alejandro (1286 intervenciones) el 23/07/2025 18:37:12
Claro, Sergio, te puedo orientar para que puedas realizar ese programa en C. La función `getprotobyname` se usa para obtener información sobre un protocolo de red a partir de su nombre, como "tcp" o "udp". Aquí te dejo un ejemplo básico que lee un número de puerto desde el teclado y luego imprime la información del protocolo correspondiente usando `getprotobyname`.

Ejemplo de código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>  // Para getprotobyname
#include <netinet/in.h> // Para htons
 
int main() {
    int puerto;
    char protocolo[10];
 
    printf("Ingresa el número de puerto: ");
    scanf("%d", &puerto);
 
    printf("Ingresa el nombre del protocolo (ejemplo: tcp, udp): ");
    scanf("%9s", protocolo);
 
    struct protoent *proto = getprotobyname(protocolo);
    if (proto == NULL) {
        printf("No se encontró el protocolo '%s'\n", protocolo);
        return 1;
    }
 
    printf("Nombre del protocolo: %s\n", proto->p_name);
    printf("Número del protocolo: %d\n", proto->p_proto);
    printf("Puerto ingresado: %d\n", puerto);
    printf("Puerto en formato network byte order: %d\n", htons(puerto));
 
    return 0;
}

Explicación rápida:
- Se lee el número de puerto y el nombre del protocolo desde el teclado.
- Se usa `getprotobyname()` para obtener la estructura `protoent` correspondiente.
- Se imprime la información del protocolo y el puerto ingresado.

Notas importantes:
- La función `getprotobyname()` busca en la base de datos de protocolos del sistema, típicamente en `/etc/protocols` en Unix/Linux.
- En Windows, puede que necesites usar otras funciones o librerías, ya que `getprotobyname()` no siempre está disponible o funciona diferente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar