• 迭代式客户端-服务系模型


    迭代式服务器 -- 实现字符回射

    服务器端
    /* 
     * echoserveri.c - An iterative echo server 
     */ 
    #include "rio.h"
    
    void echo(int connfd);
    
    int main(int argc, char **argv) 
    {
        int listenfd, connfd, port, clientlen;
        struct sockaddr_in clientaddr;  // Enough space for any address 
        struct hostent *hp; 
        char *haddrp; 
    
        if (argc != 2) {
    	fprintf(stderr, "usage: %s <port>
    ", argv[0]);
    	exit(0);
        }
        port = atoi(argv[1]); 
    
        listenfd = Open_listenfd(port);
        while (1) {
    	clientlen = sizeof(clientaddr); 
    	connfd = Accept(listenfd, (SA *)&clientaddr, &clientlen);
        
        hp = Gethostbyaddr((const char *)&clientaddr.sin_addr.s_addr,
                            sizeof(clientaddr.sin_addr.s_addr), AF_INET); 
        haddrp = inet_ntoa(clientaddr.sin_addr);
    
        printf("server connected to (%s, %s)
    ", hp->h_name, haddrp);
    	echo(connfd);
        sleep(5);   // wait 5s before close connfd
    	Close(connfd);
        }
        exit(0);
    }
    
    


    ##### 客户端
    /*
     * echoclient.c - An echo client
     */
    
    #include "rio.h"
    
    int main(int argc, char **argv) 
    {
        int clientfd, port;
        char *host, buf[MAXLINE];
        rio_t rio;
    
        if (argc != 3) {
    	fprintf(stderr, "usage: %s <host> <port>
    ", argv[0]);
    	exit(0);
        }
        host = argv[1];
        port = atoi(argv[2]);
    
        clientfd = Open_clientfd(host, port);
        Rio_readinitb(&rio, clientfd);
    
        while (Fgets(buf, MAXLINE, stdin) != NULL) {
    	Rio_writen(clientfd, buf, strlen(buf));
    	Rio_readlineb(&rio, buf, MAXLINE);
    	Fputs(buf, stdout);
        }
        Close(clientfd); 
        exit(0);
    }
    
    


    上面代码中所使用的头文件(rio.h)及其实现(rio.c)在上篇博客里。

  • 相关阅读:
    java域名解析
    JDK8新特性面试
    java设计模式--单例模式
    EclipseEE导入项目出现的那些问题
    Eclipse配置Git发布项目到Github
    SVN本地服务器的搭建
    APK的反编译
    Oracle系列--级联删除和级联更新
    Oracle创建表空间和用户
    全方面了解和学习PHP框架 PHP培训教程
  • 原文地址:https://www.cnblogs.com/acm1314/p/7019363.html
Copyright © 2020-2023  润新知