客户端向服务端发送信息,服务端将客户端发送的信息回送给客户端。
server.c
//server.c
#include<stdio.h>
#include<memory.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
int main(void)
{
int listenfd,connfd;
struct sockaddr_in ser_addr;
struct sockaddr_in cli_addr;
char buf[80];
int len;
int cli_len=sizeof(cli_addr);
memset(&ser_addr,0,sizeof(ser_addr));
ser_addr.sin_family=AF_INET;
ser_addr.sin_addr.s_addr=(INADDR_ANY);
ser_addr.sin_port=htons(10001);
if((listenfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("socket() error!\n");
exit(0);
}
if(bind(listenfd,(struct sockaddr *)&ser_addr,sizeof(ser_addr))<0)
{
printf("bind() error!\n");
exit(0);
}
if(listen(listenfd,20))
{
printf("listen() error!\n");
exit(0);
}
//connfd=accept(listenfd,(struct sockaddr *)&cli_addr,&(sizeof(struct sockaddr)));
connfd=accept(listenfd,(struct sockaddr *)&cli_addr,&cli_len);
while(1)
{
if((len=recv(connfd,buf,80,0))>0)
{
buf[len]='\0';
}
printf("client:%s\n",buf);
send(connfd,buf,sizeof(buf),0);
// printf("server:%s\n",buf);
}
close(connfd);
close(listenfd);
}
client.c
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
int main(void)
{
int serverfd;
struct sockaddr_in ser_addr;
ser_addr.sin_family=AF_INET;
ser_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
ser_addr.sin_port=htons(10001);
char str[80];
int len;
serverfd=socket(AF_INET,SOCK_STREAM,0);
connect(serverfd,(struct sockaddr *)&ser_addr,sizeof(ser_addr));
while(1)
{
printf("Client:");
scanf("%s",str);
send(serverfd,str,sizeof(str),0);
len=recv(serverfd,str,80,0);
str[len]='\0';
printf("Server:%s\n",str);
}
close(serverfd);
}