简单c/s ---20110508

来源:互联网 发布:xampp修改apache目录 编辑:程序博客网 时间:2024/05/14 17:30

服务器程序

注:此例中SERV_IP为服务器IP, "127.0.0.1"为本机IP

 

  1 #include <stdio.h>
  2 #include <sys/types.h>
  3 #include <sys/socket.h>
  4 #include <arpa/inet.h>
  5 #include <unistd.h>
  6 #include <stdlib.h>
  7
  8 #define SERV_IP "127.0.0.1"  //本机IP
  9 #define SERV_PORT 8000
 10
 11 void sys_err(char* err)
 12 {
 13     perror(err);
 14     exit(1);
 15 }
 16 int main(void)
 17 {
 18     int sock_fd;
 19     int net_fd;
 20     int ret;
 21     socklen_t addrlen;
 22
 23     struct sockaddr_in cli_addr;
 24     struct sockaddr_in serv_addr;
 25     serv_addr.sin_family = AF_INET;

 26     serv_addr.sin_port = htons(SERV_PORT);
 27     serv_addr.sin_addr.s_addr = inet_addr(SERV_IP);
 28
 29
 30     sock_fd = socket(AF_INET, SOCK_STREAM, 0);
 31     if(sock_fd == -1)
 32         sys_err("fail to socket");
 33     ret = bind(sock_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
 34     if(ret == -1)
 35         sys_err("fail to bind");
 36
 37     ret = listen(sock_fd, 20);
 38     if(ret == -1)
 39         sys_err("fail to listen");
 40     net_fd = accept(sock_fd, (struct sockaddr* )&cli_addr, &addrlen);
 41     if(net_fd == -1)
 42         sys_err("fail to accept");
 43
 44     char buf[1024];
 45     int readsize;
 46     while(1)
 47     {
 48         readsize = read(net_fd, buf, 1024);
 49         if(readsize == 0)
 50         {
 51             printf("the client has exited/n");
 52             break;
 53
 54         }
 55
 56         write(STDOUT_FILENO, buf, readsize);
 57     }
 58
 59     close(sock_fd);
 60
 61     return 0;
 62 }

 

 

 

 

客户端程序

注:SERV_IP 为服务器IP,

 

 

 1 #include <stdio.h>
  2 #include <unistd.h>
  3 #include <arpa/inet.h>
  4 #include <sys/socket.h>
  5 #include <sys/types.h>
  6 #include <stdlib.h>
  7 #include <string.h>
  8
  9 #define SERV_IP "127.0.0.1"  //本机IP
 10 #define SERV_PORT 8000
 11
 12 void sys_err(char* err)
 13 {
 14     perror(err);
 15     exit(0);
 16 }
 17 int main(void)
 18 {
 19     int sockfd;
 20     int ret;
 21
 22     struct sockaddr_in serv_addr;
 23     serv_addr.sin_family = AF_INET;
 24     serv_addr.sin_port = htons(SERV_PORT);
 25     serv_addr.sin_addr.s_addr = inet_addr(SERV_IP);
 26
 27     sockfd = socket(AF_INET, SOCK_STREAM, 0);
 28     if(sockfd == -1)
 29         sys_err("fail to socket");
 30     ret = connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
 31     if(ret == -1)
 32         sys_err("fail to connect");
 33     char buf[1024];
 34     int readsize;
 35
 36     while(1)
 37     {
 38         readsize = read(STDIN_FILENO, buf, 1024);
 39         if(strncmp(buf, "exit", 4) == 0)
 40         {
 41             printf("client has exited");
 42             break;
 43         }
 44
 45         write(sockfd, buf, readsize);
 46     }
 47     close(sockfd);
 48
 49 }


原创粉丝点击