Linux 环境下 socket通信 TimeServer TimeClient
来源:互联网 发布:mysql 5.7数据库迁移 编辑:程序博客网 时间:2024/05/16 11:43
1. server提供时间查询
(a) 先设定socket,bind地址,listen。
(b) 论循accept请求得到文件描述符fd,用fdopen打开这个特殊文件,借助fprintf写文件,关闭文件描述符fd。
(c) 但一直未关闭socket,因为while(1)循环持续运行。
server.c
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include <arpa/inet.h>#define oops(msg) { perror(msg); exit(EXIT_FAILURE); }int main(){ int socket_fd = socket(PF_INET, SOCK_STREAM, 0); if(socket_fd == -1) oops("socket initiating error..."); struct sockaddr_in address; bzero((void *)&address, sizeof(address)); address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr("192.168.100.125"); address.sin_port = 8888; int bind_return = bind(socket_fd, (struct sockaddr *)&address, sizeof(address)); if(bind_return == -1) oops("bind error..."); int listen_return = listen(socket_fd, 1); if(listen_return == -1) oops("listen error..."); while(1){ int fd = accept(socket_fd, NULL, NULL); if(fd == -1) oops("accept error..."); FILE *fp = fdopen(fd, "w"); if(fp == NULL) oops("fdopen"); time_t current_time = time(NULL); char *now_time = ctime(¤t_time); fprintf(fp, "Time here is : %s", now_time); fclose(fp); } return EXIT_SUCCESS;}2. client.c
(a) 先设定socket,connect到这个服务器地址
(b) 从socket中 read信息,写入buffer中。
(c) 对buffer中数据处理。(write到标准输出 stdout 的fd 为1)
(d) close 掉socket。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include <arpa/inet.h>#define oops(msg) { perror(msg); exit(EXIT_FAILURE); }#define SIZE 100int main(){ int socket_fd = socket(PF_INET, SOCK_STREAM, 0); if(socket_fd == -1) oops("socket initiating error..."); struct sockaddr_in address; bzero(&address, sizeof(address)); address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr("192.168.100.125"); address.sin_port = 8888; int connect_result = connect(socket_fd, (struct sockaddr*)&address, sizeof(address)); if(connect_result == -1) oops("connect error..."); char buffer[SIZE]; ssize_t message_length = read(socket_fd, buffer, SIZE); if(message_length == -1) oops("error: read data from socket..."); ssize_t write_length = write(1, buffer, message_length); //write到标准输出stdout if(write_length != message_length) oops("error: write ..."); close(socket_fd); return EXIT_SUCCESS;}
- Linux 环境下 socket通信 TimeServer TimeClient
- NIO编程 TimeServer && TimeClient
- Netty入门之 TimeServer && TimeClient
- Linux环境下socket通信
- linux环境下基于udp socket简单聊天通信
- linux-windows下socket通信
- linux下socket通信概述
- Linux下socket通信总结
- linux下的socket通信
- Linux下Socket简单通信
- linux下socket通信之通信模型
- linux下socket通信之通信模型
- linux下socket通信之通信模型
- VC环境下的socket通信
- 在Tomcat环境下使用socket通信
- Linux 环境进程间通信-socket
- Linux环境下Socket编程
- Linux环境下Socket编程
- 这就是黑龙江人
- 慧明系统补丁管家
- Android Lint使用简介
- 关于vfp声明api函数的小发现
- 快速傅氏变换之旅(一) 概念简介 2
- Linux 环境下 socket通信 TimeServer TimeClient
- [Linux项目实践] 物联网单板测试之任务四:光敏电阻
- 查询当天、本周、本月记录 获取大于跟当前时间相差几天的语句
- IO端口和IO内存
- phpcmsv9表单向导运用
- SQL Server备份/还原 SQL注入
- fatal error C1083: 无法打开包括文件:“pcap.h”: WinPcap编程
- IOS开发之sqlit3应用
- 字符串、时间差等操作