⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 利用socket套接字来实现客户端和服务器端的通讯的简单实例
💻 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 + -