📄 echoserv1.c
字号:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#define BUFLEN 255
#define SOCKADDR struct sockaddr
main()
{struct sockaddr_in sockaddr_echo,sockaddr_cli;
int listenfd,echofd;
char recmsg[BUFLEN+1];
int socklen,n;
listenfd=socket(AF_INET,SOCK_STREAM,0);
if(listenfd<0){
printf("socket creating error!\n");
exit(1);
}
memset(&sockaddr_echo,0,sizeof(struct sockaddr_in));
sockaddr_echo.sin_family=AF_INET;
sockaddr_echo.sin_port=htons(1234);
sockaddr_echo.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(listenfd,(struct sockaddr *)&sockaddr_echo,sizeof(struct sockaddr_in))<0){
printf("bind failed\n");
exit(2);
}
listen(listenfd,5);
socklen=sizeof(SOCKADDR);
for(;;){
echofd=accept(listenfd,(SOCKADDR *)(&sockaddr_cli),&socklen);
printf("connect come from %s %d\n",inet_ntoa(sockaddr_cli.sin_addr),ntohs(sockaddr_cli.sin_port));
while((n=read(echofd,recmsg,BUFLEN))>0){
recmsg[n]=0;
printf("client sent:%s",recmsg);
write(echofd,recmsg,n);
}
if(n==-1){
fprintf(stderr,"read error in server socket!\n");
exit(3);
}
printf("client %s closed!\n",inet_ntoa(sockaddr_cli.sin_addr));
close(listenfd);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -