zoukankan      html  css  js  c++  java
  • Linux网络编程系列-TCP编程实例

    实例:

    client

    #include <stdio.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    const int MAXLINE = 100;
    void str_cli(int sockfd) {
      char recvline[MAXLINE];
      string str;
      getline(cin, str);
      while (!str.empty()) {
        send(sockfd, str.c_str(), str.size(), 0);
        if (recv(sockfd, recvline, MAXLINE, 0) != -1) {
          cout << "receive from server:" << recvline << endl;
        }
        getline(cin, str);
      }
    }
    
    int main() {
      int sockfd;
      struct sockaddr_in servaddr;
      
      sockfd = socket(AF_INET, SOCK_STREAM, 0);
      bzero(&servaddr, sizeof(servaddr));
      servaddr.sin_family = AF_INET;
      servaddr.sin_port = htons(8000);
      inet_pton(AF_INET, "10.3.17.75", &servaddr.sin_addr);
    
      connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
      str_cli(sockfd);
      exit(0);
    }


    server

    #include <sys/socket.h>
    #include <netinet/in.h>
    void str_echo(int sockfd) {
      size_t n;
      char line[MAXLINE];
      while(true) {
        if ((n = recv(sockfd, line, MAXLINE, 0)) == 0)
          return;
        cout << "from client:" << line << endl;
        send(sockfd, line, n, 0);
      }
    }
    
    int main(int argc, char** argv) {
      int listenfd, connfd;
      socklen_t clilen;
      struct sockaddr_in cliaddr, servaddr;
    
      listenfd = socket(AF_INET, SOCK_STREAM, 0);
    
      bzero(&servaddr, sizeof(servaddr));
      servaddr.sin_family = AF_INET;
      servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
      servaddr.sin_port = htons(8000);
      bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
      
      listen(listenfd, 0);
      while (true) {
        clilen = sizeof(cliaddr);
        connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &clilen);
        if ( 0 == fork() ) {
          close(listenfd);
          str_echo(connfd);
          exit(0);
        }
        close(connfd);
      }
    }

  • 相关阅读:
    bzoj1663: [Usaco2006 Open]赶集
    bzoj1662: [Usaco2006 Nov]Round Numbers 圆环数
    [bzoj3771]Triple
    [bzoj1477]青蛙的约会
    [bzoj2299][HAOI2011]向量
    [2017.4.7校内训练赛by hzwer]
    [bzoj2456]mode
    [bzoj2120]数颜色
    [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症
    [4.6校内训练赛]
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982001.html
Copyright © 2011-2022 走看看