📄 server.c
字号:
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
#include <malloc.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <stdarg.h>
#define SERVPORT 8765
#define BACKLOG 10
main()
{
FILE *fp;
char buf[50],msg[50];
int sockfd,clientfd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
int sin_size=sizeof(struct sockaddr_in);
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket error\n");
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr)) == -1)
{
perror("bind error\n");
exit(1);
}
if(listen(sockfd,BACKLOG)== -1)
{
perror("listen error\n");
exit(1);
}
while(1)
{
if((clientfd = accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size)) == -1)
{
perror("accept error");
continue;
}
if(recv(clientfd,buf,20,0)== -1)
{
perror("recv error");
exit(1);
}
if((fp = fopen("ser.conf","r")) != NULL)
while(fgets(msg,30,fp)!=NULL)
{
if(msg[strlen(buf)] == '=')
if(strncmp(msg,buf,strlen(buf)) == 0) break;
}
fclose(fp);
printf("received a connection from %s\n",inet_ntoa(remote_addr.sin_addr));
if(!fork())
{
if(send(clientfd,msg,20,0)== -1)
{
perror("send error");
close(clientfd);
exit(0);
}
close(clientfd);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -