echo_server.c

来自「基于GTK的服务器server程序」· C语言 代码 · 共 74 行

C
74
字号
#include <glib.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <netdb.h>
#include <netinet/in.h>

#define OURPORT 8088
void do_service (gind sd)
{
  gchar buf[1024];
  while (read(sd,buf,1024)!=-1)
  {
    write(sd,buf,1024);
  }
}

int main(int argc,char*argv[])
{
   gint sd,newsd;
   struct sockaddr_in *sin;
   gint slen;
   gchar buf [1024];
   sd = socket(AF_INET,SOCK_STREAM,0);
   
   if (sd==-1)
   {
     g_print("creat sock error!\n");
     return -1;
   }
   
   sin = g_new(struct sockaddr_in,1);
   sin->sin_family=AF_INET;
   sin->sin_port = OUTPORT;
   slen = sizeof(struct sockaddr_in);
   
   if(bind(sd,sin,slen)<0)
   {
     g_print("bind error!\n");
     return -1;
   }
   
   if(listen(sd,8)<0)
   {
    g_print("listen error!\n");
    return -1;
   }
   
   for(;;)
   {
     newsd = accept(sd,sin,&slen);
     if(newsd==-1)
     {
       g_print("accept error!\n");
       break;
     } 
     switch(fork())
     {
       case 0:
           do_service(newsd);
           break;
       case 1:
           g_print("fork error!\n");
           break;
     }
   }
   
   close(sd);
   g_freee(sin);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?