UNIX网络编程第4章4.5listen函数4.6accept函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了UNIX网络编程第4章4.5listen函数4.6accept函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1815字,纯文字阅读大概需要3分钟。
内容图文
#include <time.h> #include "../lib/unpsunyj.h"// Daytime server that prints client IP address and portint main(int argc, char **argv) { int listenfd; int connfd; socklen_t len; struct sockaddr_in servaddr; struct sockaddr_in cliaddr; // 它将存放客户的协议地址char buff[MAXLINE]; time_t ticks; // listenfd = Socket(AF_INET, SOCK_STREAM, 0);if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) err_sys("socket error"); 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));if (bind(listenfd, (sockaddr*)&servaddr, sizeof(servaddr)) < 0) { err_sys("bind error"); } // Listen(listenfd, LISTENQ);if (listen(listenfd, LISTENQ) < 0) { err_sys("listen error"); } for ( ; ; ) { len = sizeof(cliaddr); // connfd = Accept(listenfd, (SA *) &cliaddr, &len);again: if ((connfd = accept(listenfd, (sockaddr*)&cliaddr, &len)) < 0) { #ifdef EPROTO if (errno == EPROTO || errno == ECONNABORTED) #elseif (errno == ECONNABORTED) #endifgoto again; else err_sys("accept error"); } constchar *ptr; if ((ptr = inet_ntop(AF_INET, &cliaddr.sin_addr, buff, sizeof(buff))) == NULL) err_sys("inet_ntop error"); /* sets errno */ printf("connection from %s, port %d\n", // Inet_ntop(AF_INET, &cliaddr.sin_addr, buff, sizeof(buff)), ptr, ntohs(cliaddr.sin_port)); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); // Write(connfd, buff, strlen(buff));int length = strlen(buff); if (write(connfd, buff, length) != length) { err_sys("write error"); } // Close(connfd);if (close(connfd) == -1) { err_sys("close error"); } } }
原文:http://www.cnblogs.com/sunyongjie1984/p/4340049.html
内容总结
以上是互联网集市为您收集整理的UNIX网络编程第4章4.5listen函数4.6accept函数全部内容,希望文章能够帮你解决UNIX网络编程第4章4.5listen函数4.6accept函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。