Declaraciones de compilación del programa de socket de programación de Linux
Lado del servidor:
#include
#include
#include
#include
#include
#include
#include
#define MAX_LINE 100
int main()
{
estructura sockaddr_in servidor;
struct sockaddr_in cliente;
int server_fd;
int client_fd;
socklen_t len;
char buf[MAX_LINE]; //Se utiliza para almacenar el contenido de la transferencia en el búfer
char addr_ip[INET_ADDRSTRLEN];//Búfer de dirección del cliente de almacenamiento
int port = 8000; Número de puerto 8000
int n; //Número de bytes para leer y escribir
bzero(&server,sizeof(server));//Borrar la estructura de direcciones
server.sin_family = AF_INET;//Usa ipv4
server.sin_addr.s_addr = INADDR_ANY;//El servidor puede aceptar cualquier dirección
server.sin_port = htons(port) ;/ /Convierte el número de puerto al orden de bytes de la red
server_fd = socket(AF_INET,SOCK_STREAM,0);//Crea un socket y usa el protocolo tcp
bind(server_fd, ( struct sockaddr *)&server,sizeof(server));// Vincular la dirección al socket
listening(server_fd,10);//Empezar a escuchar
printf(" esperando ```\n");
while(1)
{
client_fd = aceptar(server_fd,(struct sockaddr *)&client,&len) ;
n = read(client_fd,buf,MAX_LINE);//Leer mensajes del cliente
inet_ntop(AF_INET,&client.sin_addr,addr_ip,sizeof(addr_ip)) ; p>
printf("la ip del cliente es: %s, el puerto es: %d\n",addr_ip,ntohs(client.sin_port));
printf("el contenido es: %s\ n",buf);//Imprimir información del cliente
write(client_fd,buf,n);//Reenviarla al cliente
close(client_fd);
}
if(close(client_fd) == -1)
{
perror("no se pudo cerrar"); >
salir(1);
}
devolver 0;
}
Cliente:
p>
#include
#include
#include
#include < unistd.h>
#include
#include
#include
#define MAX_LINE 100
int main(int argc,char * argv[])
{
struct sockaddr_in. servidor ;//Dirección del servidor
char buf[MAX_LINE];
int server_fd;
int puerto = 8000;
char * str = "cadena de prueba";//Cadena predeterminada
if(argc > 1)
{
str = argv[1];//Desde el comando Obtenga la cadena ingresada por el usuario del parámetro
}
bzero(&server,sizeof(server));//Borrar la estructura de direcciones
servidor. sin_family = AF_INET; //Usa ipv4
inet_pton(AF_INET,"192.168.228.129",&server.sin_addr);
server.sin_port = htons(puerto);
server_fd = socket(AF_INET,SOCK_STREAM,0);//Crear socket
connect(server_fd,(struct sockaddr *)&server,sizeof(server));
escribir (server_fd, str,strlen(str) + 1);
//Debido a que es una prueba local, no es necesario considerar el retraso
read(server_fd,buf, MAX_LINE);
printf("recibir del servidor :%s\n",buf);
cerrar(server_fd);
devolver 0; p>
}
// El código fuente proviene de Internet y es similar a todos los que lo escriben. Todos están escritos en base al protocolo de enlace de tres vías TCP.