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

linux网络编程系列(二)

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

90630

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系列文章,请关注我公众号:晟夏叶。

    1.1K30

    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数组中。

    77020

    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有接收缓冲区。

    1.2K20

    写给新手们编程修养

    作者:陈皓 来源: https://blog.csdn.net/haoel/article/details/2872 什么是好程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?...这些都是程序员修养,这里我想谈谈“编程修养”,也就是上述中第5点。...编程序很简单,但编出有质量程序就难了。...用不了多久,连自己都不知道自己意图了,还要花上几倍时间才明白,这种浪费别人和自己时间的人,是最为可耻的人。 是的,你也许会说,你会写注释,真的吗?注释书写也能看出一个程序员功底。...有修养程序员,就应该要学会写出这样代码!这是任何一个想做编程高手所必需面对细小问题,编程高手不仅技术要强,基础要好,而且最重要是要有“修养”!

    1.4K30

    Linux入门系列(一)换个角度Linux其实很简单,带你一起入门

    它可比我介绍详细得多得多,所以想了解Linux简介,出门左拐找度娘哦。...编程作为一门跟计算机交流语言;作为我们操控计算机 偷懒 工具,我总结了学习它有三个层面,第一个层面是:用了再说;第二个层面是:开始深入怎么用更好;第三个层面好奇它是怎么实现。...我觉得入门就得从第一个层面开始实际,往后深入再慢慢深耕。 准确来说,我不是带你学Linux,而是和你一起使用Linux,抱着学Linux总是枯燥。...,去使用一下 cd:切换目录 更多cd操作,请看菜鸟教程里cd操作 https://www.runoob.com/linux/linux-comm-cd.html ?...记住一颗剽悍种子说。 与其学完就忘,不如直接当工具一样去使用。 孰能生巧,总会记住,忘了Linux参考手册——Linux命令大全很香。 把我会,认真的分享 是我写文章一直不变信条。

    1.1K10

    linux源码socketclose

    linux源码socketclose 笔者一直觉得如果能知道从应用到框架再到操作系统每一处代码,是一件Exciting事情。...上篇博客讲了socket阻塞和非阻塞,这篇就开始谈一谈socketclose(以tcp为例且基于linux-2.6.24内核版本) TCP关闭状态转移图: 众所周知,TCPclose过程是四次挥手...出现大量close_wait情况 linux中出现大量close_wait情况一般是应用在检测到对端fin时没有及时close当前连接。有一种可能如下图所示: ?...总结 linux内核源代码博大精深,阅读其代码很费周折。之前读>时候由于有先辈引导和梳理,所以看书中所使用BSD源码并不觉得十分费劲。...直到现在自己带着问题独立linux源码时候,尽管有之前基础,仍旧被其中各种细节所迷惑。希望笔者这篇文章能帮助到阅读linux网络协议栈代码的人。

    5.4K80

    linuxshell编程入门

    1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备重要工具, Linux/UNIX系统底层及基础应用软件核心大都涉及Shell脚本内容...三、脚本语言 定义:为了缩短传统编写-编译-链接-运行(edit-compile-link-run)过程而创建计算机编程语言。...shell脚本优势在于处理操作系统底层业务 (linux系统内部应用都是shell脚本完成)因为有大量linux系统命令为它做支撑。...2000多个命令都是shell脚本编程有力支撑,特别是grep、awk、sed等。...注释部分不会被执行,仅给人。注释可以自成一行,也可以跟在命令后面,与命令同行。要养成写注释习惯,方便自己与他人。 最好不用中文注释,因为在不同字符集系统会出现乱码。

    8.1K30

    LinuxSOCKET编程详解

    LinuxSOCKET编程详解 1. 网络中进程之间如何通信 进 程通信概念最初来源于单机系统。...使用TCP/IP协议应用程序通常采用应用编程接口:UNIX BSD套接字(socket)和UNIX System VTLI(已经被淘汰),来实现网络进程之间通信。...注意:其实socket也没有层概念,它只是一个facade设计模式应用,让编程更简单。是一个软件抽象层。在网络编程中,我们大量用都是通过socket实现。...从应用程序角度,文件描述符是一个整数,应用程序可以用它来读写文件。下图显示,操作系统如何把文件描述符实现为一个指针数组,这些指针指向内部数据结构。 对于每个程序系统都有一张单独表。...Socket编程实例 服务器端:一直监听本机8000号端口,如果收到连接请求,将接收请求并接收客户端发来消息,并向客户端返回消息。

    8.3K10

    linux源码socket(tcp)timeout

    前言 网络编程中超时时间是一个重要但又容易被忽略问题,对其设置需要仔细斟酌。在经历了数次物理机宕机之后,笔者详细考察了在网络编程(tcp)中各种超时设置,于是就有了本篇博文。...本文大部分讨论是socket设置为block情况,即setNonblock(false),仅在最后提及了nonblock socket(本文基于linux 2.6.32-431内核)。...javaSocketInputStreamsockRead0超时时间 java超时时间由SO_TIMOUT决定,而linuxsocket并没有这个选项。...定时器超时事件发生时间如上面几小节所述,和是否nonblock无关。nonblock编程模式可以让应用层对这些事件做出响应。...总结 网络编程中超时时间是个重要但又容易被忽略问题,这个问题只有在遇到物理机宕机等平时遇不到现象时候才会凸显。

    2K20

    Linux编程--指针++操作

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

    83830

    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.

    2.5K10

    Linux编程(阻塞概念)

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

    2.1K30
    领券