简单c/s ---20110508

服务器程序

注:此例中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 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪游东戴河

你就是这个世界的唯一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值