socket网络编程
文章平均质量分 91
资源https://download.csdn.net/download/wanggao_1990/21831799。网络通信知识,osi模型、tcp/ip协议栈、socket基本知识;基本udp、tcp套接字编程、I/O复用、套接字选项;高级套接字编程(高级IO函数、非阻塞IO);名称与地址转换。
aworkholic
路漫漫其修远兮,吾将上下而求索
展开
-
网络编程(16) AF_UNIX本地进程间通信
linux本地进程间通讯,大概有如下几种方式,socket本地域套接字是其中的一种。以上仅用于一台计算机内部不同进程之间的通信,而既可以进行本地通信,更多的是多台主机之间通过网络通信项目中,主应用和协议栈两个进程间通讯,就是用的socket本地域套接字。(需要自定义数据协议格式,一般定义好协议格式头+数据+尾即可)原创 2022-10-03 11:09:37 · 1189 阅读 · 0 评论 -
网络编程(15)名字与地址转换
本章主要介绍:**主机名与数值地址转换(gethostbyname,gethostbyaddr)**,**服务名与端口转换(getserverbyname,getserverbyaddr)**。前面的4个函数方法仅支持IPv4相关协议,还介绍与协议无关的函数**getaddrinfo、getnameinfo**。另外还提到了与套接字地址转换类似关于**可重入函数**、**局域网IP地址获取**的说明。原创 2020-10-26 20:58:08 · 577 阅读 · 1 评论 -
网络编程(14)非阻塞IO
套接字的默认状态是阻塞的,这就意味着当发出一个不能立即完成的套接字调用时,其进程将投入休眠,等待响应操作完成。可能阻塞的套接字分为以下四类:(1)输入操作read、readv、recv、recvform和recvmsg;(2)输出操作write、writev、send、sendto和sendmsg;(3)发起外出连接connect;(4)接受外来连接accept。原创 2020-10-26 20:15:19 · 1662 阅读 · 0 评论 -
网络编程(13)高级IO函数 (2)排队的数据量
本章笼统归为“高级I/O”的各个函数和技术,包含三部分内容。第一,在I/O操作上设置超时,有三种方法;第二,read与write函数的变体,recv与send、readv与writev、recvmsg与sendmsg。第三,确定套接字缓冲区数据量和其他有关说明(获取接受缓冲区的排队数据,使用函数ioctl, 使用MSG_PEEK等标志等)。原创 2020-10-26 19:57:10 · 331 阅读 · 0 评论 -
网络编程(13)高级IO函数
本章笼统归为“高级I/O”的各个函数和技术,包含三部分内容。第一,在I/O操作上设置超时,有三种方法;第二,read与write函数的变体,recv与send、readv与writev、recvmsg与sendmsg。第三,确定套接字缓冲区数据量和其他有关说明(获取接受缓冲区的排队数据,使用函数ioctl, 使用MSG_PEEK等标志等)。原创 2020-10-26 19:48:49 · 496 阅读 · 0 评论 -
网络编程(12)套接字选项
前面介绍了有关套接字的UDP和TCP网络编程,程序中都是在套接字之后(未经特殊操作)直接使用的,此时是通过默认的套接字特性进行通信的。之前的示例都较为简单,无需操作套接字特性,但有时候必须修改。获取和设置影响套接字的选项函数有:getsockopt和setsockopt函数,fcntl函数,ioctl函数。这里主要介绍getsockopt和setsockopt函数,另外还简单介绍fcntl函数。原创 2020-10-24 13:37:31 · 662 阅读 · 0 评论 -
网络编程(11)IO复用(2)select、poll、epoll
当一个单线程的服务器既想等待终端标准输入,也想等待若干个套接字连接请求,这个时候就需要使用I/O复用了。select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的;而epoll是异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到原创 2020-09-06 10:04:55 · 486 阅读 · 0 评论 -
网络编程(10)IO复用(1)五种IO模型
在前面TCP并发服务器中,客户端在和服务端建立连接后先用fgets获取标准输入,再用write、read收发消息,这两个步骤都属于I/O模型使用,前者是标准的输入输出I/O,后者套接字使用的是网络I/O。当服务端断开连接时客户端由于阻塞在标准输I/O导致不能获取网络I/O的状态,应该有一种机制使得内核一旦发现一个或多个I/O条件就绪时能通知讲程序。这个能力就是I/O复用,主要有select、poll支持。首先介绍基本的 概念,再介绍五种IO模型,最后比较分析这五种模型。1、I/O模型介绍为更好了解IO原创 2020-08-23 21:53:11 · 919 阅读 · 0 评论 -
网络编程(9)获取socket地址信息
文章目录1、不同函数介绍1.1 recvfrom1.2 accept1.3 getsockname、getpeername2、使用场景2.1、获取本地地址信息2.1.1 UDP客户端获取本地地址2.1.2 TCP客户端获取本地地址2.2、获取对端地址信息2.2.1 UDP中获取对端地址2.2.2 TCP中获取对端地址3、总结3.1 获取对端地址信息3.2 获取本地地址信息3.3 解析地址信息在UDP/TCP套接字编程,因为业务需要知道本地客户端、对端服务端的地址信息。先将有关地址获取的函数进原创 2020-08-23 21:40:03 · 6296 阅读 · 0 评论 -
网络编程(8)TCP套接字编程(3)并发服务器
在前面的博文网络编程(3)的演示示例中已经介绍过TCP最简单的代码流程,本章节在此基础上进行拓展:先改造成服务端能不断接收客户端的消息,客户端也能反复发消息给服务端;之后,对服务端继续改进,简单使用线程处理并发的每一个客户端的一段时间的连接请求,断开后关闭当前线程;最后使用地址转换相关函数,识别对端用户的协议地址结构。上一篇博客已经说明第一点,当前博文完成后两点内容。1、TCP并发服务器在前文的基础上,继续改进服务器程序,使得服务端能够不断为不同客户端服务,最简单的做法就是直接将accept原创 2020-08-15 13:26:41 · 451 阅读 · 0 评论 -
网络编程(8)TCP套接字编程(2)并发服务器 TCP 示例改进
在前面的博文网络编程(3)的演示示例中已经介绍过TCP最简单的代码流程,本章节在此基础上进行拓展,先改造成服务端能不断接收客户端的消息,客户端也能反复发消息给服务端;之后,对服务端继续改进,简单使用线程处理并发的每一个客户端的一段时间的连接请求,断开后关闭当前线程;最后使用地址转换相关函数,识别对端用户的协议地址结构。为阅读方便,控制篇幅,当前博文仅写第一点。1、TCP示例改进这里直接在前面TCP示例的基础上,服务端能够不断的接收客户端的消息,客户端也能不间断读取控制台输入的向服务端发送消息原创 2020-08-15 12:30:26 · 240 阅读 · 0 评论 -
网络编程(8)TCP套接字编程(1)基本概念
文章目录1、TCP的特点2、TCP连接的建立和终止2.1 连接建立2.2 TCP选项2.3 TCP连接终止2.4 TCP状态转换图2.5 TIME_WAIT状态TCP是指传输控制协议(Transmission Control Protocal),是面向连接的协议,为用户进程提供可靠的全双工字节流,TCP套接字是一种流套接字。TCP关心确认、超时、重传等细节,广泛应用于互联网应用程序中。1、TCP的特点TCP提供客户与服务器之间的连接,TCP客户先与指定服务器建立一个连接,再跨越该连接与服务器进行交换数原创 2020-08-15 12:05:29 · 617 阅读 · 0 评论 -
网络编程(7)UDP客户端使用bind、connet
文章目录1、UDP客户端使用bind()函数2、UDP客户端使用connect()函数3、UDP客户端使用已连接UDP套接字性能一般使用情况下,UDP网络通信的客户端不需要显示的去bind指定ip、port,交给内核进行分配即可,因为一般客户端不需要知道自己的本地的地址信息(也同样适用于TCP客户端)。但是,在客户端程序中bind也是可以使用的。另外,TCP客户端需要在创建套接字之必须调用connect()函数连接到服务器,之后在发送数据。对于UDP客户端,也同样可以选择使用connect()函数,这涉原创 2020-08-15 11:50:27 · 4217 阅读 · 0 评论 -
网络编程(6)UDP套接字编程(3)UDP echo服务
前面概念中简单提到,UDP是无连接的不可靠的数据报协议,非常不同于TCP面向连接的可靠字节流。然而,相比TCP有些场合更适合使用UDP,例如常见的应用程序有:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络文件管理系统)等。根据应用场景,给出不同的UDP服务端代码、客户端代码:(1)服务端、客户端都接受、发送一次数据(2)服务端可不断接收客户端的,并能区分多客户端(3)服务端echo服务,客户端发送并回显本文讲解第三篇。1、UDP echo服务在上一节的基础上,服务端接收来自个客原创 2020-08-15 11:32:22 · 1242 阅读 · 0 评论 -
网络编程(6)UDP套接字编程(2)UDP服务端
前面概念中简单提到,UDP是无连接的不可靠的数据报协议,非常不同于TCP面向连接的可靠字节流。然而,相比TCP有些场合更适合使用UDP,例如常见的应用程序有:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络文件管理系统)等。根据应用场景,给出不同的UDP服务端代码、客户端代码:(1)服务端、客户端都接受、发送一次数据(2)服务端可不断接收客户端的,并能区分多客户端(3)服务端echo服务,客户端发送并回显本文讲解第二篇。1、UDP服务端在上一节基础上,修改UDP服务端可以不断接收原创 2020-08-15 11:15:09 · 442 阅读 · 0 评论 -
网络编程(6)UDP套接字编程(1)最简单UDP通信
前面概念中简单提到,UDP是无连接的不可靠的数据报协议,非常不同于TCP面向连接的可靠字节流。然而,相比TCP有些场合更适合使用UDP,例如常见的应用程序有:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络文件管理系统)等。根据应用场景,给出不同的UDP服务端代码、客户端代码:(1)服务端、客户端都接受、发送一次数据(2)服务端可不断接收客户端的,并能区分多客户端(3)服务端echo服务,客户端发送并回显本文讲解第一篇。1、简单的一次性UDP通信当前的例子,仅给出最简单最少的代码原创 2020-08-14 21:39:44 · 411 阅读 · 0 评论 -
网络编程(5)套接字地址结构、地址转换
本节主要说明常用的套接字结构地址,以及地址结构的成员变量,以及相关的函数,另外还介绍用于获取或返回与某个套接字关联的本地/外地的协议地址。原创 2020-08-09 00:22:18 · 615 阅读 · 0 评论 -
网络编程(4)socket主要函数接口、跨平台处理
首先介绍上一节示例中用到的一些socket编程的主要函数接口,包括函数入参、返回值。之后简单介绍跨平台下socket代码移植的处理方法。原创 2020-08-08 19:50:20 · 759 阅读 · 0 评论 -
网络编程(3) 简单的基于TCP的socket通信示例
以TCP通信流程图为例说明客户端和服务端的运行流程,并给出了最简单的客户端和服务端代码,并进行了源码剖析。原创 2020-08-08 19:19:42 · 412 阅读 · 0 评论 -
网络编程(2)socket概念
第一个部分,说明说明是socket,UNIX/Linux和 Window 系统中的 socket 是什么。第二个部分,socket的类型有流格式套接字、数据报格式套接字。第三个部分,详细说明无连接的套接字、面向连接的套接字的区别和总结。原创 2020-08-08 18:43:03 · 309 阅读 · 0 评论 -
网络编程(1)基本知识
系列文章第一篇,主要是网络编程一些基础知识点。一、OSI参考模型二、TCP/IP参考模型三、网络协议1、应用层2、 传输层(主机到主机层协议)3、 网络层(因特网层协议)四、IP地址、MAC地址、端口原创 2020-08-08 18:22:48 · 490 阅读 · 0 评论