UNIX网络编程练习-简单的时间服务器和客户端
2015-11-30 05:07
639 查看
// 客户端程序 // DATE: 2015.11.30 // AUTH: robertkun #include <netinet/in.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <iostream> #include <string.h> #include <unistd.h> using namespace std; typedef sockaddr SA; int main(int argc, char* argv[]) { if(argc != 2) { cerr<<"ip not define!"<<endl; return 0; } // 创建套接字 int sockfd = socket(AF_INET, SOCK_STREAM, 0); if(sockfd < 0) cerr<<"socket init error!"<<endl; // 初始化地址 struct sockaddr_in addr; bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(6543); // 装字符串转换成网络地址 if(inet_pton(AF_INET, argv[1], &addr.sin_addr) <= 0) { cerr<<"addr error!"<<endl; return 0; } // 连接服务器 if(connect(sockfd, (SA *)&addr, sizeof(addr)) < 0) { cerr<<"connect error!"<<endl; return 0; } // 读取数据 int n = 0; char buff[256] = {0}; while((n = read(sockfd, buff, 256)) > 0) { buff = 0; cout<<buff<<endl; } if(n < 0) { cerr<<"read error!"<<endl; return 0; } return 1; }
// 服务端程序 // DATE: 2015.11.30 // AUTH: robertkun #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <iostream> #include <string.h> #include <unistd.h> #include <errno.h> using namespace std; typedef struct sockaddr SA; int main() { char buff[256] = {0}; // 创建TCP套接字 int _fd = socket(AF_INET, SOCK_STREAM, 0); // 绑定端口到套接字 struct sockaddr_in addr; bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_port = htons(6543); if(bind(_fd, (SA *)&addr, sizeof(addr)) != 0) { cerr<<"bind error!"<<errno<<endl; return -1; } // 打开监听 if(listen(_fd, 256) != 0) { cerr<<"listen error!"<<endl; return -1; } // 等待连接 while(1) { int _connfd = accept(_fd, (SA *)NULL, NULL); if(_connfd) cout<<"accept ok"<<endl; time_t ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); write(_connfd, buff, strlen(buff)); // 终止连接 close(_connfd); } return 0; }
运行结果:
相关文章推荐
- 告别CSDN,转去博客园(http://www.cnblogs.com/organic/)
- TCP/IP的ICMP协议,端口号,TCP建立连接的3次握手
- Socket连接与HTTP连接
- 厦门巨游网络科技有限公司(HOTPOWER)承接游戏UI外包
- spring 4.x下让http请求返回json串
- ImageView显示网络图片,避免NetworkOnMainThreadException错误
- ios9 https 回退到http
- 让孩子把时间花在网络
- iOS中从网络获取数据的几种方法的比较
- 神经网络(二)
- VMware配置网络连接
- iOS 获取网络时间
- Java Web入门项目之“网络交友”的设计与实现
- c# 使用sharppcap实现 网络抓包
- 通过树莓派的无线网卡与pc的tcp助手通讯实验
- Ansible用于网络设备管理 part 2 对Jinja2 YAML 和 module的理解
- 子网掩码、端口、DNS、网关
- Android 6.0 使用 Apache HttpClient
- 通信协议-HTTP/TCP/UDP
- 基于TCP协议的树莓派灯光控制