\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网络编程——客户端编程相关推荐

  1. Linux网络原理与编程——第十一节 网络基础及套接字

    目录 一.网络的层状划分结构 二.网络发展史 三.协议 四.OSI七层结构模型 五.TCP/IP四层(五层)协议结构模型 六.局域网中通信原理初识 封包.解包.分用.mac帧 七.跨网络通信原理初始 ...

  2. [linux] Linux网络之Socket编程入门

    目录 1. 前言 2. 网络基础 2.1 协议 2.1.1 TCP和UDP协议 2.2 网络的层状结构 2.3 一台主机向另一台主机的发送数据的流向 2.4 IP和MAC地址 2.5 端口 2.6 网 ...

  3. 基于UDP客户端服务器的编程模型-linux网络编程

    坚持在代码中注释,边读代码边学习Linux网络编程 使用到的发送函数原型: #include <sys/types.h>#include <sys/socket.h>ssize ...

  4. Linux网络编程实例分析

    最近由于工作原因需要温习一下Linux网络编程的部分基础知识,因此对之前写的Socket网络通信的代码进行了进一步优化和拓展,在不关闭一次Socket连接的基础上,对服务端加入循环读写的功能,同时加入 ...

  5. 新书预告:《Linux 多线程服务端编程——使用 muduo C++ 网络库》

    看完了 W. Richard Stevens 的传世经典<UNIX 网络编程>, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下 ...

  6. linux网络编程二:基础socket, bind, listen, accept, connect

    linux网络编程二:基础socket, bind, listen, accept, connect 1. 创建socket #include <sys/types.h>     #inc ...

  7. linux网络编程常用函数详解与实例(socket--bind--listen--accept)

    常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可 ...

  8. 【Linux网络编程】并发服务器之select模型

    00. 目录 文章目录 00. 目录 01. 概述 02. I/O复用技术概述 03. select模型服务器实现思路 04. select模型服务器实现 05. 附录 01. 概述 服务器设计技术有 ...

  9. 【Linux网络编程】并发服务器之多线程模型

    00. 目录 文章目录 00. 目录 01. 概述 02. 多线程服务器 03. 多线程服务器实现思路 04. 多线程服务器实现 05. 附录 01. 概述 服务器设计技术有很多,按使用的协议来分有 ...

最新文章

  1. Excel技巧之——英文大小写转换(转)
  2. Docker 阿里云镜像加速
  3. WSUS 3.0 STEP BY STEP 配置手册
  4. ELK学习5_ELK文档资料:《ELK stack 权威指南/饶琛琳》推荐
  5. python之路day2_Python之路,day2
  6. iOS开发UI篇—核心动画(UIView封装动画)
  7. dalvik on J2EE: running tomcat on dalvik
  8. HDU 1034 - Candy Sharing Game
  9. C++ Primer Plus学习(二)—— 基本编程技能
  10. 计算机体系、语言的基础认识
  11. 米思齐 Mixly 解决函数模块无法上下连接。
  12. Windows右键菜单管理 图片右键菜单太长
  13. 奇技淫巧之dummy网卡
  14. python聊天室socket+tkinter_基于socket和tkinter的python网络聊天室程序
  15. linux 下oracle11g卸载干净,linux系统Oracle11g R2完整卸载教程
  16. JVM学习笔记07-垃圾回收
  17. python 图片验证码
  18. 每日哲学与编程练习5——分数问题(Python实现)
  19. 计算机学院年会,重庆大学计算机学院举行2019年迎新晚会
  20. android 刘海屏适配方法

热门文章

  1. LeetCode 284. 顶端迭代器
  2. mysql分页插件springboot_SpringBoot--使用Mybatis分页插件
  3. 南昌理工学院计算机网络技术专业怎么样,南昌理工学院怎么样 重点专业是什么...
  4. lamp ci框架 php配置文件,LAMP环境搭建
  5. PAT乙类1010之1010 一元多项式求导
  6. 谷歌:CNN击败Transformer,有望成为预训练界新霸主!LeCun却沉默了...
  7. 【面试必备】奉上最通俗易懂的XGBoost、LightGBM、BERT、XLNet原理解析
  8. 美团 iOS 工程 zsource 命令背后的那些事儿
  9. Java远程通讯技术及原理分析
  10. 论文浅尝 - ACL2020 | 通过集成知识转换进行多语言知识图谱补全