?? 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 + -