Programación de Cppsocket
Encontré lo que escribí antes y lo cambié 10 veces como dijiste.
Cliente.c:
#incluye & ltstdio.h & gt
#incluye & ltstdlib.h & gt
#incluye & ltstring.h & gt
# include & lterrno& gt
# include & ltsys/types h & gt;
# include & ltsys/socket . h & gt;
# incluir & ltnetinet/in . h & gt;
int main(int argc, char **argv)
{ p>
char wbuf[]= " hola servidor ";
char rbuf[128];
int I;
int sock
struct sockaddr _ in server = { 0 };
struct timeval timeo
timeo .TV _ sec = 0
timeo .TV_usec =. 1000 * 1000; //
socklen _t len = sizeof(timeo);
if (argc!= 2)
{
printf("Uso:.
/cliente & lt; dirección IP & gt\ n ");
return-1;
}
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock <0)
{
error("Crear socket TCP");
return- 1;
}
setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, & amptimeo, len);
server.sin_family = AF_INET
server sin . _ puerto = htons(30000);
inet_pton(AF_INET, argv[1], & amp(server . sin _ addr));
int res = connect(sock, ( struct sockaddr *)& servidor, tamaño de(servidor));
if (RES <0)
{
if(res == EINPROGRESS)
perror("Tiempo de espera del socket de flujo de conexión:");
Otros
perror("Error del receptor del socket de flujo de conexión: ");
Cerrar(calcetín);
return-1;
}
Otros
{
printf( "Conectarse al servidor@%s\n ", argv[1]);
for(I = 0;i<10;i++) p>
{
int wsize = enviar(sock,wbuf,sizeof(wbuf),0);
if(wsize<=0)
{
perror("Error de escritura :");
Cerrar(calcetín);
return-1;
}
printf(" 1111111i = % d \ n ", I);
mientras(1)
{
intr tamaño = recv(calcetín, rbuf, tamañode(rbuf), 0);
if(rsize & gt; 0)
{
rbuf[rsize]= '\0';
printf("Recibido mensaje del servidor: %s\n ", rbuf);
Break;
}
if(rsize & lt; 0)
{
Cerrar(calcetín);
error("Error de lectura:");
return-1;
}
}
}
Cerrar (calcetines);
Devolver 0;
}
}
server.c:
# incluir & ltstdio.h & gt p>
# incluir & ltstdlib.h & gt
# incluir & ltstring.h & gt
# incluir & número de error& gt
# incluir & ltsys/types
# incluir. & ltsys/socket . h & gt;
# incluye & ltnetinet/in .
int main(int argc, char** argv)
{
int listeningfd, connfd
struct sockaddr _ en serva DDR = { 0 };
char rbuf[128];
char wbuf[]= " hola cliente "; p>if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("Crear socket TCP");
return-1;
}
servaddr.sin_family = AF_INET
serv addr . sin _ addr s _ addr = htonl(in addr _ ANY. );
servaddr . sin _ port = htons(30000);
if( bind(listenfd, (struct sockaddr *)&servaddr, sizeof (servaddr)) == - 1)
{
error("Error de socket de enlace:");
return-1;
p>
}
if(listen FD(10)=-1)
{
error("Error del socket de escucha:") ;
return-1;
}
printf(" = = = = = Esperando solicitud del cliente = = = = = = \n " );
while(1)
{
if( (connfd = aceptar(listenfd, (struct sockaddr*)NULL, NULL)) == - 1)
{
error("Error al aceptar el socket:");
Continuar;
}
mientras(1)
{
n = recv(connfd, rbuf, sizeof(rbuf), 0
if (n & gt0 )
{); p>
rbuf[n]= ' \ 0 ';
printf("recvmsg del cliente: %s\n ",rbuf);
n = enviar(connfd ,wbuf,sizeof(wbuf),0);
If (n & lt=0)
{
error(" error sned:");
Cerrar(connfd);
Romper;
}
} p>
si no (n & lt ; 0)
{
error("error de recepción:");
Cerrar(connfd);
Interrupción; p>
}
}
Cerrar(connfd);
}
Cerrar(listenfd);
Devuelve 0;
}
Tiempo de ejecución, cliente
. /cliente la ip de su servidor.
El puerto 30000 que utilicé está codificado en el programa.