客户端:
- #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
" ); - 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);
- 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_quit("connect error");
- while((n=read(sockfd,recvline,MAXLINE))>0){
- recvline[n]=0;
- if(fputs(recvline,stdout)==EOF)
- err_sys("fputs error");
- }
- if(n<0)
- err_sys("read error");
- exit(0);
- }
服务器端:
- #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);
- 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);
- }
- }
附件:
参考文献: