Unix網絡編程之環境搭建

環境搭建

 

在嘗試UNP書上的樣例時,會因爲找不到"unp.h"等問題沒法編譯成功。所以在學習以前需要先搭建好編譯環境。編程

 

 

步驟

 

<1>下載  UNIX網絡編程源碼unpv13e.tar.gz網絡

下載連接  http://download.csdn.net/detail/ymsdu2004/4906181socket

 

<2>解壓 進入該文件夾後運行post

./configure  學習

再進入lib文件夾下 cd lib       運行 makeui

此時會在上層文件夾(就是剛纔有configure那個文件夾)生成libunp.a文件spa

 

<3>複製libunp.a到 /usr/lib下  (之後gcc編譯就可以用 -lunp來調用該庫文件).net

 

<4>最後在configure文件夾下找到config.h  在lib文件夾下找到unp.h 拷貝到你寫代碼的某個文件下就能夠code

把unp.h中 #include "../config.h"改爲#include "config.h"server

 

 

測試

 

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\r\n", ctime(&ticks));
        Write(connfd, buff, strlen(buff));

		Close(connfd);
	}
}


 

此時文件夾下有4個文件

 

 

編譯程序

 

 

查看本身的ip(因爲client鏈接server需要知道server,也就是你本身電腦的ip)

 

我測試時電腦的IP爲10.206.27.149

 

 

測試結果

 

先運行server程序

此時,server處於等待 監聽狀態

 

再運行client程序

此時返回了我電腦本機的時間,實現了測試。

這時咱們的環境已經搭建好了。

相關文章
相關標籤/搜索