tcp 客户、服务器程序示例
来源:互联网 发布:sony手机知乎 编辑:程序博客网 时间:2024/04/28 14:53
1)client 从标准输入读入一行文本,并写给服务器。
2)服务器从网络输入读入这行文本,并回射给客户。
3)客户从网络输入读入这行回射的文本,显示在标准输出上
标准输入—–fgets—-> tcp 客户—write——————-read–>tcp 服务器
标准输出<—-fputs—–tcp 客户<—read——————-write—tcp 服务器
client 代码
#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <unistd.h>#include <string.h>void str_cli(FILE *fp, int sockfd){ char sendline[1024], recvline[1024]; while( fgets(sendline, 1024, fp) != NULL ) { write(sockfd, sendline, strlen(sendline)); if(read(sockfd, recvline, 1024) <= 0 ) { printf("server terminated\n"); } fputs(recvline, stdout); }}int main(int argc , char** argv){ int sockfd; struct sockaddr_in seraddr; if(argc !=2) { printf("argc error\r\n"); } if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("socket error\r\n"); } bzero(&seraddr, sizeof(seraddr)); seraddr.sin_family = AF_INET; seraddr.sin_port = htons(13000); if((inet_pton(AF_INET, argv[1], &seraddr.sin_addr)) < 0) { printf("inet_pton error\r\n"); } if(connect(sockfd, (struct sockaddr*)&seraddr, sizeof(seraddr)) < 0) { printf("connect error\r\n"); } str_cli(stdin, sockfd); return 0;}
server 代码
#include <time.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <string.h>#include <unistd.h>#include <stdio.h>#include <arpa/inet.h>#include <stdlib.h>void str_echo(int sockfd){ ssize_t n; char buf[1024]; while((n = read(sockfd, buf, 1024)) > 0 ) { write(sockfd, buf, n); } if(n < 0) { printf("read error\r\n"); }}int main(int argc, char** argv){ int listenfd, connectfd; socklen_t client_len; struct sockaddr_in servaddr, client_addr; pid_t childpid; if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("sock error\r\n"); return 0; } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13000); servaddr.sin_addr.s_addr = inet_addr("0.0.0.0"); if( bind(listenfd, (struct sockaddr* )&servaddr, sizeof(servaddr)) < 0) { printf("bind error\r\n"); return 0; } if(listen(listenfd, 0) < 0) { printf("listen error\r\n"); return 0; } for( ; ;) { client_len = sizeof(client_addr); connectfd = accept(listenfd, (struct sockaddr*)&client_addr, &client_len); if( (childpid = fork())== 0) { close(listenfd); str_echo(connectfd); exit(0); } close(connectfd); }}
0 0
- TCP 客户/服务器程序示例
- TCp客户/服务器程序示例
- TCP客户/服务器程序示例
- tcp 客户、服务器程序示例
- TCP客户/服务器程序示例
- UNP函数笔记三: TCP客户/服务器程序示例
- UNIX网络编程---TCP客户/服务器程序示例(五)
- UNPV3第五章TCP客户/服务器程序示例
- 【UNIX网络编程(三)】TCP客户/服务器程序示例
- Linux网络编程(三) TCP客户/服务器程序示例
- UNP——Chapter 5:TCP客户/服务器程序示例
- UNPv13:#第5章#TCP客户/服务器程序示例
- TCP客户、服务端程序示例
- UDP客户/服务器程序示例
- TCP客户/服务器程序实例
- TCP客户/服务器程序实例
- Unix网络编程代码 第5章 TCP客户/服务器程序示例
- UNIX网络编程卷一 笔记 第五章 TCP客户/服务器程序示例
- NSLog与printf的区别
- Java I/O
- weinre,移动端远程调试工具(适用于Android和Windows Phone)
- CodeForces 527B(字符串)
- Hadoop图像压缩
- tcp 客户、服务器程序示例
- 子类会自动调用父类的无参构造函数
- 覆盖你 80 % 网络生活的,竟是这样一家神秘实验室
- 【UML】构件图Component diagram(实现图)
- Terminal开启自动补全功能
- ETL开源工具kettle的基本使用
- leetcode_30 Next Permutation
- Android实现组合键监听功能
- 填坑之路 MVC5 新闻发布系统