zoukankan      html  css  js  c++  java
  • Unix网络编程之环境搭建

    环境搭建

     

    在尝试UNP书上的样例时,会由于找不到"unp.h"等问题无法编译成功。因此在学习之前须要先搭建好编译环境。

     

     

    步骤

    <1>下载  UNIX网络编程源码unpv13e.tar.gz

    下载链接  http://download.csdn.net/detail/ymsdu2004/4906181

    <2>解压 进入该文件夹后运行

    ./configure 

    再进入lib文件夹下 cd lib       运行 make

    此时会在上层文件夹(就是刚才有configure那个文件夹)生成libunp.a文件

     

    <3>复制libunp.a到 /usr/lib下  (以后gcc编译就能够用 -lunp来调用该库文件)

     

    <4>最后在configure文件夹下找到config.h  在lib文件夹下找到unp.h 拷贝到你写代码的某个文件下就可以

    把unp.h中 #include "../config.h"改成#include "config.h"

    測试

    client程序

    #include	"unp.h"
    
    int
    main(int argc, char **argv)
    {
    	int					sockfd, n;
    	char				recvline[MAXLINE + 1];
    	struct sockaddr_in	servaddr;
    
    	if (argc != 2)
    		err_quit("usage: a.out <IPaddress>");
    
    	if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    		err_sys("socket error");
    
    	bzero(&servaddr, sizeof(servaddr));
    	servaddr.sin_family = AF_INET;
    	servaddr.sin_port   = htons(13);	/* daytime server */
    	if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
    		err_quit("inet_pton error for %s", argv[1]);
    
    	if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)
    		err_sys("connect error");
    
    	while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
    		recvline[n] = 0;	/* null terminate */
    		if (fputs(recvline, stdout) == EOF)
    			err_sys("fputs error");
    	}
    	if (n < 0)
    		err_sys("read error");
    
    	exit(0);
    }


     

    server程序

    #include	"unp.h"
    #include	<time.h>
    
    int
    main(int argc, char **argv)
    {
    	int					listenfd, connfd;
    	struct sockaddr_in	servaddr;
    	char				buff[MAXLINE];
    	time_t				ticks;
    
    	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(13);	/* daytime server */
    
    	Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
    
    	Listen(listenfd, LISTENQ);
    
    	for ( ; ; ) {
    		connfd = Accept(listenfd, (SA *) NULL, NULL);
    
            ticks = time(NULL);
            snprintf(buff, sizeof(buff), "%.24s
    ", ctime(&ticks));
            Write(connfd, buff, strlen(buff));
    
    		Close(connfd);
    	}
    }


     

    此时文件夹下有4个文件

     

    编译程序

    查看自己的ip(由于client连接server须要知道server,也就是你自己电脑的ip)

    我測试时电脑的IP为10.206.27.149

     

     

    測试结果

     

    先运行server程序

    此时,server处于等待 监听状态

     

    再运行client程序

    此时返回了我电脑本机的时间,实现了測试。

    这时我们的环境已经搭建好了。

     

     

  • 相关阅读:
    线段拟合(带拉格朗日乘子,HGL)
    工作到位的标准
    Git的简单使用
    位移
    java日期格式化(util包下转成sql包下)
    java中继承的概念
    工作流驳回到指定连线节点上
    年终个人总结
    实现多条件查询 匹配数据库字段中多个数据
    activiti和SSH项目做整合
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6932116.html
Copyright © 2011-2022 走看看