首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux网络编程系列(二)

之前发在公众号上代码阅读体验不佳,所以排版后重新发布。 1. 网络编程基本概念 1.1 什么是套接字 套接字,也叫socket,是操作系统内核中一个数据结构,它是网络中节点进行相互通信门户。...; 1.3 ip地址表示 通常我们在表达IP地址时习惯使用点分十进制表示数值(或者是为冒号分开十六进制Ipv6地址),而在socket编程中使用则是二进制值,这就需要对这两个数值进行转换。...内存低地址存储数据低字节,高地址存储数据高字节方式叫小端模式; 内存高地址存储数据低字节,低地址存储数据高字节方式称为大端模式; eg,对于内存中存放数0x12345678来说: 如果是采用大端模式存放...Ipv6地址),而在socket编程中使用则是32位网络字节序二进制值,这就需要对这两个数值进行转换。...在linux中,最常用是gethostbyname()和gethostbyaddr(),它们都可以实现IPv4/IPv6地址和主机名之间转化。

84930

linux系列之shell编程(一)

linux系列之shell编程(一) shell概述 shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。 shell解释器 Linux提供解释器有 [shaofei@upuptop-pc ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh...:在找到匹配内容时所执行系列命令 选项参数说明 选项参数 功能 -F 指定输入文件折分隔符 -v 赋值一个用户定义变量 案例实操 数据准备 [shaofei@upuptop-pc sh]$ sudo...[shaofei@upuptop-pc sh]$ awk '/^$/{print NR}' sed.txt 5 sort sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出...: 张三 40 李四 50 王五 60 使用Linux命令计算第二列和并输出 [shaofei@upuptop-pc sh]$ cat chengji.txt | awk -F " " '{sum+

1.4K00
您找到你想要的搜索结果了吗?
是的
没有找到

linux网络编程系列(十)--epoll基本使用

网络编程四种IO模型 阻塞IO模型,默认socket都是阻塞,就是IO操作都要等待操作完成以后才能返回; 非阻塞IO模型,就是IO操作时不等待,立即返回,但需要不断去询问内核,数据是否准备好了,...2.1.3 水平模式和边沿模式选择 ET比LT对应用程序要求更多,需要程序员设计部分也更多,看上去LT好像要简单很多,但是当我们要求对fd有超时控制时,LT也同样需要对fds进行遍历,此时不如使用本来就要遍历...而且由于epollwait每次返回fds数量是有限,在大并发模式下,LT将非常繁忙,所有的fds都要在它队列中产生状态信息,而每次只有一部分fds能返回给应用程序。...功能说明:等侍注册在epfd(epoll生成文件描述符)上socket fd事件发生,如果发生则将发生sokct fd和事件类型放入到events数组中。...更多c++及python系列文章,请关注我公众号:晟夏叶。

99630

linux网络编程系列(九)--epoll基本使用

网络编程四种IO模型 阻塞IO模型,默认socket都是阻塞,就是IO操作都要等待操作完成以后才能返回; 非阻塞IO模型,就是IO操作时不等待,立即返回,但需要不断去询问内核,数据是否准备好了,...2.1.3 水平模式和边沿模式选择 ET比LT对应用程序要求更多,需要程序员设计部分也更多,看上去LT好像要简单很多,但是当我们要求对fd有超时控制时,LT也同样需要对fds进行遍历,此时不如使用本来就要遍历...而且由于epollwait每次返回fds数量是有限,在大并发模式下,LT将非常繁忙,所有的fds都要在它队列中产生状态信息,而每次只有一部分fds能返回给应用程序。...event); epoll事件注册函数, 注册要监听事件类型: 参数说明: epfd epoll_create返回句柄 op 表示动作,用3个宏表示:EPOLLCTLADD 注册新fd到epfd...功能说明: 等侍注册在epfd(epoll生成文件描述符)上socket fd事件发生,如果发生则将发生sokct fd和事件类型放入到events数组中。

72620

linux网络编程系列(五)--setsockopt常用选项

level:选项定义层次;支持SOLSOCKET、IPPROTOTCP、IPPROTOIP和IPPROTOIPV6 optname:需设置选项,而有部分选项需在listen/connect调用前设置才有效...使用场景 (1)如果在已经处于 ESTABLISHED状态下socket(一般由端口号和标志符区分)调用close(socket)(一般不会立即关闭而经历TIME_WAIT过程)后想继续重用该socket...,返回是实际发送出去字节(同步)或发送到socket缓冲区字节(异步),系统默认状态发送和接收一次为8688字节(约为8.5K);在实际过程中发送数据和接收数据量比较大,可以设置socket缓冲区...,系统就会设置多大,系统一般会将我们设置缓冲区大小加倍,并且不得小于tcp接收缓冲区和发送缓冲区设置默认最小值。...注意:TCP有发送缓冲区和接收缓冲区,但是UDP因为是不可靠,它没有确认重传机制,不保存应用程序数据副本,所以是没有发送缓冲区,但是UDP有接收缓冲区。

1K20

linux网络编程之POSIX 消息队列 和 系列函数

posix消息队列一个可能实现如下图: 其实消息队列就是一个可以让进程间交换数据场所,而两个标准消息队列最大不同可能只是api 函数不同,如system v 系列函数是msgxxx,而posix...posix 消息队列也有一些对消息长度等限制,man 7 mq_overview: simba@ubuntu:~/Documents/code/linux_programming/UNP/posix$...还有一点是,在Linux上,posix 消息队列是以虚拟文件系统实现,必须将其挂载到某个目录才能看见,如            # mkdir /dev/mqueue            #...二、系列函数,编译时候加上 -lrt 选项,即连接librt 库 (实时库)       #include           /* For O_* constants */      .../mq_notify 输出: simba@ubuntu:~/Documents/code/linux_programming/UNP/posix$ .

2.1K00

linux udp编程_linux中socket编程

在前面的文件中,我们介绍了linux网络编程中与IP相关知识和常用函数总结,本文针对具体UDP通信,来详细介绍UDP通信使用,包括UDP通信中点对点通信,多播,广播等。...一、UDP通信中服务端和客户端基本编程框架 与TCP相比较,UDP是面向无连接通信方式,不需要connect、listen、accept等函数操作,不用维护TCP连接、断开等状态。...addr中信息,确实一个错误IP信息或者0.0.0.0这样地址信息,这是什么原因呢,在那个男人描述,有如下一段话 总结来说,就是我们必须初始化addr_size长度,如果设置长度比...3.2、组播使用 组播在基本UDP编程框架基础上,使用setsockopt()函数和getsockopt()函数来实现,需要设置IP层相关参数(第二个参数为 IPPROTO_IP),其原型如下:...:加入或者退出一个组播组其参数为一个结构体 使用组播一个基本编程流程如下: 3.3 使用组播服务端和客户端例子 (TBD) 三、UDP中广播使用 UDP广播与普通UDP通信区别不是很大,如果需要发送广播消息时

11K10

linux socket udp编程_linux网络编程socket

大家好,又见面了,我是你们朋友全栈君。 文章目录 前言 一、UDP是什么 二、UDP 数据报服务特点 二、UDP 编程流程 1.服务器 2.客户端 3.输出结果 总结 前言 浅谈UDP。...提示:以下是本篇文章正文内容,下面案例可供参考 一、UDP是什么 UDP是一种不可靠、无连接、数据报服务。...并且,如果用户没有指定足够应用程序缓冲区来读取 UDP 数据,则 UDP 数据将被截断。 因此,采用UDP协议时必须要求接收端可以一次性收取完发送端一次发送数据,不然就会造成数据丢失。...二、UDP 编程流程 1.服务器 代码如下(示例): int main() { int sockfd = socket(AF_INET,SOCK_DGRAM,0); assert( sockfd...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

9.8K20

linuxshell编程入门

1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备重要工具, Linux/UNIX系统底层及基础应用软件核心大都涉及Shell脚本内容...每一个合格 Linux系统管理员或运维工程师,都需要能够熟练地编写Shell脚本语言,并能够阅 读系统及各类软件附带Shell脚本内容。...三、脚本语言 定义:为了缩短传统编写-编译-链接-运行(edit-compile-link-run)过程而创建计算机编程语言。...shell脚本优势在于处理操作系统底层业务 (linux系统内部应用都是shell脚本完成)因为有大量linux系统命令为它做支撑。...2000多个命令都是shell脚本编程有力支撑,特别是grep、awk、sed等。

8K30

LinuxSOCKET编程详解

LinuxSOCKET编程详解 1. 网络中进程之间如何通信 进 程通信概念最初来源于单机系统。...使用TCP/IP协议应用程序通常采用应用编程接口:UNIX BSD套接字(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...注意:其实socket也没有层概念,它只是一个facade设计模式应用,让编程更简单。是一个软件抽象层。在网络编程中,我们大量用都是通过socket实现。...应用程序创建套接字后在该套接字可以使用之前,必须调用其他过程来填充这些字段。 3、文件描述符和文件指针区别: 文件描述符:在linux系统中打开文件就会获得文件描述符,它是个很小正整数。...Socket编程实例 服务器端:一直监听本机8000号端口,如果收到连接请求,将接收请求并接收客户端发来消息,并向客户端返回消息。

8.1K10

Linux编程--指针++操作

背景 在学习ELF文件过程中,看到Matrix中有类似于如下代码来遍历ELF文件e->phdr程序头表内容。...而不是简单地址加上对应数字? 问题2:在for循环中,phdr_start_addr++为何能找到程序头表中下一个段结构呢?...日志验证 在代码中加入日志,打印phdr起始与结束地址,以及entry总数与每个entry大小。...*)指针中进行运算,因为在运行时候会有很多字节对齐操作,如果没有指定类型的话,无法知道对应结构体大小,所以禁止(void *)指针计算。...结论 对于地址加减来说,可以正常按数加减,而且加减完后可以赋值给结构体指针。 而对于指针加减来说,是对于指针对应结构体大小而言,每次加减都是计算N个结构体大小偏移。

81030

LinuxSOCKET编程详解

使用TCP/IP协议应用程序通常采用应用编程接口:UNIX BSD套接字(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...注意:其实socket也没有层概念,它只是一个facade设计模式应用,让编程更简单。是一个软件抽象层。在网络编程中,我们大量用都是通过socket实现。...应用程序创建套接字后在该套接字可以使用之前,必须调用其他过程来填充这些字段。 3、文件描述符和文件指针区别: 文件描述符:在linux系统中打开文件就会获得文件描述符,它是个很小正整数。...详细内容请看linux文件系统:http://blog.csdn.net/hguisu/article/details/6122513#t7 4....具体如何实现,可以看看linux内核 4.1、socket()函数 int socket(int protofamily, int type, int protocol);//返回sockfd

2.3K10

Linux编程(阻塞概念)

看还有哪个家伙读成阻zu塞sai,还有谁不会念? 你还真的点开链接啦? 今天真的是一趟语文课,就教会大家正确念这两个字姿势,看: 兹z武u,阻zu。 丝s饿e,塞se。 阻塞。...这个道理跟Linux下读取慢速设备(主要指管道和套接字)数据情形非常相似,例如当我们在读取一个管道时,如果管道里面没有数据,那么我们什么都读不出来,于是就进入了所谓“阻塞”状态了,说白了阻塞就是使得当前进程或者线程睡眠了意思...其中,读者指的是对管道文件拥有读权限进程或线程(注意不是正在读),写者指的是对管道文件拥有写权限进程或线程(注意不是正在写)。...除此之外,其实open()函数也会发生阻塞,比如用只读或者只写open一个管道文件时候。因为一根只有出口或者只有入口水管,是无法使用呀!其实就是生活常识。嘿嘿!

2.1K30

网络编程 - Linux Socket编程

Linux Socket编程 ---- 目录 前言 Socket功能 Socket基础 Socket类型 基本结构 基本转换函数 基本Socket使用 TCP Socket实例 UDP Socket实例...疑难问题记录 总结 ---- 前言   socket(套接字)是网络编程编程一种技巧。...本篇不涉及太底层网络原理,仅说明socket基本使用方法。主要参考《Linux网络编程》。本篇源码获取方式见文底小字。...所以每次调用 inet_ntoa(),都会改变最后一次调用 inet_ntoa() 函数时得到结果。 基本Socket使用   Linux同时支持面向连接和不连接类型套接字。...网络编程非常有趣,能够实现天南海北之间通讯,让远距离的人与人、人与物或者物与物之间产生联系,很有意思! 最后 用心感悟,认真记录,写好每一篇文章,分享每一框干货。

9.7K50

Linux进程编程

Linux进程编程 3.1 fork系统调用 3.1.1 fork工作原理 3.1.2 fork函数 3.1.3 fork编程示例 3.1.4 小结 3.2 exec系统调用 3.2.1 exec函数族作用...执行过程如下: Linux内核在进程表中为子进程分配一个表项,然后分配PID。...子进程表项内容来自父进程,fork会将父进程表项复制为副本,并分配给子进程; Linux内核使父进程文件表和索引表节点自增1,创建用户及上下文; 将父进程上下文复制到子进程上下文空间中; fork...这里可执行文件既可以是二进制文件,也可以是任何Linux下可执行脚本文件。...我们应该明白了,Linux下是如何执行新程序,每当有进程认为自己不能为系统和用户做出任何贡献了,他就可以发挥最后一点余热,调用任何一个exec,让自己以新面貌重生;或者,更普遍情况是,如果一个进程想执行另一个程序

7.8K20

Linux Shell编程

# Linux Shell编程 # 为什么要学习Shell编程 Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。...对于大数据程序员来说,需要编写Shell程序来管理集群 # Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序界面系统级程序,用户可以用Shell来启动...# Shell变量介绍 Linux Shell中变量分为,系统变量和用户自定义变量。...秒内输入 read -t 10 -p "请输入一个数NUM2=" NUM2 echo "你输入NUM2=$NUM2" # 函数 # 函数介绍 shell编程和其它编程语言一样,有系统函数,也可以自定义函数...echo "和是=$SUM" } #输入两个值 read -p "请输入一个数n1=" n1 read -p "请输入一个数n2=" n2 # 调用自定义函数 getSum $n1 $n2 # Shell编程综合案例

36.2K20
领券