linux网络编程——客户端编程
\qquad一个简单的客户端/服务端通信程序。
\qquad服务端:将客户端上传的字符串,改为大写字符串,并且显示客户端的IP和端口号。
#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<ctype.h>
#include<arpa/inet.h>#define SERV_PORT 6666
int main()
{int lfd,cfd;struct sockaddr_in serv_addr,clie_addr;socklen_t clie_addr_len,clie_IP_len;char buf[BUFSIZ],clie_IP[BUFSIZ];int n,ret;lfd = socket(AF_INET,SOCK_STREAM,0);if(lfd==-1){perror("socket error");exit(1);}serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(SERV_PORT);serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);ret = bind(lfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));if(ret==-1){perror("bind error");exit(1);} ret = listen(lfd,128);if(ret==-1){perror("listen error");exit(1);}clie_addr_len = sizeof(clie_addr);cfd = accept(lfd,(struct sockaddr *)&clie_addr,&clie_addr_len);if(cfd==-1){perror("accept error");exit(1);}printf("client IP:%s,client port:%d\n",inet_ntop(AF_INET,&clie_addr.sin_addr.s_addr,clie_IP,sizeof(clie_IP)),ntohs(clie_addr.sin_port));while(1){n = read(cfd,buf,sizeof(buf));for(int i=0;i<n;i++){buf[i] = toupper(buf[i]);}write(cfd,buf,n);}close(lfd);close(cfd);return 0;
}
\qquad客户端:将字符串上传到服务端
#include <stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<string.h>
#define SERV_IP "192.168.0.2"
#define SERV_PORT 6666
int main()
{int cfd;struct sockaddr_in serv_addr;socklen_t serv_addr_len;char buf[BUFSIZ];int n;cfd = socket(AF_INET,SOCK_STREAM,0);memset(&serv_addr,0,sizeof(serv_addr)); serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(SERV_PORT);inet_pton(AF_INET,SERV_IP,&serv_addr.sin_addr.s_addr);connect(cfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));while(1){fgets(buf,sizeof(buf),stdin);write(cfd,buf,strlen(buf));n = read(cfd,buf,sizeof(buf));write(STDOUT_FILENO,buf,n);} close(cfd);return 0;
}
linux网络编程——客户端编程相关推荐
- Linux网络原理与编程——第十一节 网络基础及套接字
目录 一.网络的层状划分结构 二.网络发展史 三.协议 四.OSI七层结构模型 五.TCP/IP四层(五层)协议结构模型 六.局域网中通信原理初识 封包.解包.分用.mac帧 七.跨网络通信原理初始 ...
- [linux] Linux网络之Socket编程入门
目录 1. 前言 2. 网络基础 2.1 协议 2.1.1 TCP和UDP协议 2.2 网络的层状结构 2.3 一台主机向另一台主机的发送数据的流向 2.4 IP和MAC地址 2.5 端口 2.6 网 ...
- 基于UDP客户端服务器的编程模型-linux网络编程
坚持在代码中注释,边读代码边学习Linux网络编程 使用到的发送函数原型: #include <sys/types.h>#include <sys/socket.h>ssize ...
- Linux网络编程实例分析
最近由于工作原因需要温习一下Linux网络编程的部分基础知识,因此对之前写的Socket网络通信的代码进行了进一步优化和拓展,在不关闭一次Socket连接的基础上,对服务端加入循环读写的功能,同时加入 ...
- 新书预告:《Linux 多线程服务端编程——使用 muduo C++ 网络库》
看完了 W. Richard Stevens 的传世经典<UNIX 网络编程>, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下 ...
- linux网络编程二:基础socket, bind, listen, accept, connect
linux网络编程二:基础socket, bind, listen, accept, connect 1. 创建socket #include <sys/types.h> #inc ...
- linux网络编程常用函数详解与实例(socket--bind--listen--accept)
常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可 ...
- 【Linux网络编程】并发服务器之select模型
00. 目录 文章目录 00. 目录 01. 概述 02. I/O复用技术概述 03. select模型服务器实现思路 04. select模型服务器实现 05. 附录 01. 概述 服务器设计技术有 ...
- 【Linux网络编程】并发服务器之多线程模型
00. 目录 文章目录 00. 目录 01. 概述 02. 多线程服务器 03. 多线程服务器实现思路 04. 多线程服务器实现 05. 附录 01. 概述 服务器设计技术有很多,按使用的协议来分有 ...
最新文章
- Excel技巧之——英文大小写转换(转)
- Docker 阿里云镜像加速
- WSUS 3.0 STEP BY STEP 配置手册
- ELK学习5_ELK文档资料:《ELK stack 权威指南/饶琛琳》推荐
- python之路day2_Python之路,day2
- iOS开发UI篇—核心动画(UIView封装动画)
- dalvik on J2EE: running tomcat on dalvik
- HDU 1034 - Candy Sharing Game
- C++ Primer Plus学习(二)—— 基本编程技能
- 计算机体系、语言的基础认识
- 米思齐 Mixly 解决函数模块无法上下连接。
- Windows右键菜单管理 图片右键菜单太长
- 奇技淫巧之dummy网卡
- python聊天室socket+tkinter_基于socket和tkinter的python网络聊天室程序
- linux 下oracle11g卸载干净,linux系统Oracle11g R2完整卸载教程
- JVM学习笔记07-垃圾回收
- python 图片验证码
- 每日哲学与编程练习5——分数问题(Python实现)
- 计算机学院年会,重庆大学计算机学院举行2019年迎新晚会
- android 刘海屏适配方法
热门文章
- LeetCode 284. 顶端迭代器
- mysql分页插件springboot_SpringBoot--使用Mybatis分页插件
- 南昌理工学院计算机网络技术专业怎么样,南昌理工学院怎么样 重点专业是什么...
- lamp ci框架 php配置文件,LAMP环境搭建
- PAT乙类1010之1010 一元多项式求导
- 谷歌:CNN击败Transformer,有望成为预训练界新霸主!LeCun却沉默了...
- 【面试必备】奉上最通俗易懂的XGBoost、LightGBM、BERT、XLNet原理解析
- 美团 iOS 工程 zsource 命令背后的那些事儿
- Java远程通讯技术及原理分析
- 论文浅尝 - ACL2020 | 通过集成知识转换进行多语言知识图谱补全