当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
Linux下服务端编程
发布时间:2010/5/14 11:29:59 来源:城市学习网 编辑:ziteng
  #include
  #include
  #include
  #include
  #include
  #include
  #include
  #define SERVER_PORT 20000
  #define LEN_LISTEN_QUEUE 10
  #define BUFFER_SIZE 255
  #define WELCOME_MESSAGE "welcome to connect the server. "
  int main(int argc, char **argv)
  {
  int server_sockfd, client_sockfd;
  struct sockaddr_in server_addr;
  struct sockaddr_in client_addr;
  printf("the server program!\n");
  if ((server_sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
  {
  printf("create socket error!\n");
  exit(1);
  }
  bzero(&server_addr, sizeof(server_addr));
  server_addr.sin_family = AF_INET;
  server_addr.sin_port = htons(SERVER_PORT);
  server_addr.sin_addr.s_addr = htons(INADDR_ANY);
  if(bind(server_sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
  {
  printf("bind to port %d failure!\n", SERVER_PORT);
  exit(1);
  }
  if(listen(server_sockfd, LEN_LISTEN_QUEUE) < 0)
  {
  printf("call listen failure!\n");
  exit(1);
  }
  while(1)
  {
  char buf[BUFFER_SIZE];
  long timestamp;
  socklen_t length = sizeof(client_addr);
  client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_addr, &length);
  if(client_sockfd < 0)
  {
  printf("error comes when call accept!\n");
  break;
  }
  strcpy(buf, WELCOME_MESSAGE);
  printf("from client,IP:%s,Port:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
  timestamp = time(NULL);
  strcat(buf, "timestamp in server:");
  strcat(buf, ctime(& timestamp));
  send(client_sockfd, buf, BUFFER_SIZE, 0);
  close(client_sockfd);
  }
  close(server_sockfd);
  return 0;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved