网络编程
文章平均质量分 96
学习和总结Linux系统平台下的网络编程技术。
yunfan188
把时髦的技术挂在嘴边,还不如把过时的技术记在心里。
展开
-
Linux网络编程 - 主机域名和IP地址的转换(IPv4 & IPv6)
主机域名和IP地址的转换(IPv4 & IPv6)原创 2022-03-05 19:21:35 · 3256 阅读 · 0 评论 -
Linux网络编程 - 实现基于Linux的多线程Web服务器端
本篇博文主要是讲解基于HTTP协议的Web服务器端的网络编程。原创 2022-02-16 21:38:30 · 2021 阅读 · 0 评论 -
Linux网络编程 - 基于 I/O 复用的聊天服务器端(epoll:LT 和 ET 模式实现)
基于 I/O复用的聊天服务器端的实现,其中服务器端分别使用 epoll 的条件触发(水平触发)和 边缘触发(边沿触发)方式实现。聊天客户端使用多线程技术实现消息发送和消息接收的功能。原创 2022-01-22 18:21:37 · 1606 阅读 · 0 评论 -
Linux网络编程 - 多线程服务器端的实现(2)
本文主要讲解线程同步以及使用多线程编程模型实现并发服务器端。原创 2022-01-22 17:11:45 · 746 阅读 · 0 评论 -
Linux网络编程 - 多线程服务器端的实现(1)
本文主要讲解Linux系统下的多线程编程技术,包括线程的基本概念、线程的基本操作、多线程编程存在的问题,什么是临界区等内容。原创 2022-01-20 18:09:07 · 3690 阅读 · 0 评论 -
Linux网络编程 - 基于 I/O 复用的服务器端(epoll:LT 和 ET 模式实现)
本文主要讲解 epoll 的两种工作模式:水平触发(Level Trigger,LT)模式和边缘触发(Edge Trigger,ET)模式。原创 2022-01-18 23:31:42 · 887 阅读 · 0 评论 -
Linux网络编程 - 基于 I/O 复用的服务器端(epoll 实现)
本文主要讲解Linux下的 I/O 多路复用之一的 epoll 技术。原创 2022-01-17 23:15:21 · 700 阅读 · 0 评论 -
Linux网络编程 - 使用标准 I/O 时的 I/O 流分离带来的 EOF 问题
本文主要讲解了使用标准 I/O 函数进行socket编程时,分离 I/O流 带来的 EOF 问题以及解决方法。原创 2022-01-16 19:01:27 · 1755 阅读 · 1 评论 -
Linux网络编程 - 基于标准 I/O函数的套接字(socket)编程
本文主要讲解在Linux网络编程中使用 标准 I/O 函数进行数据收发操作的方法。原创 2022-01-16 01:28:42 · 742 阅读 · 0 评论 -
Linux网络编程 - 多播与广播
本篇博文主要讲解多播与广播的基本概念以及基于多播与广播的网络编程实现方法。原创 2022-01-15 18:07:50 · 1956 阅读 · 0 评论 -
Linux网络编程 - 多种 I/O 函数(send、recv、readv、writev)
本文主要讲解Linux下的多个 I/O 函数的使用方法和注意事项,包括:send & recv、readv & writev 函数。原创 2022-01-14 14:53:00 · 3364 阅读 · 0 评论 -
Linux网络编程 - 基于 I/O 复用的服务器端(select 实现)
本文中我们将讨论并发服务器的第二种实现方法——基于I/O复用(Multi-plexing)的服务器端构建,并通过 select 函数实现 I/O 复用服务器端。原创 2022-01-12 12:38:12 · 1619 阅读 · 2 评论 -
Linux网络编程 - 在服务器端运用进程间通信之管道(pipe)
本文主要讲解进程间通信之一的管道(匿名管道)方式,讨论Linux系统中管道的工作原理及其使用方法,并将管道机制运用在Linux网络编程之中。原创 2022-01-10 19:01:55 · 2135 阅读 · 0 评论 -
Linux网络编程 - 多进程服务器端(2)
实现一个多进程的服务器端程序。原创 2022-01-08 19:02:50 · 1057 阅读 · 0 评论 -
Linux网络编程 - 多进程服务器端(1)
在我们对Linux下的socket编程有了一定的理解后,想要实现真正能够提供服务的服务器端,还有很多的事情需要做。本博文中主要介绍如何构建一个多进程的服务器端。原创 2022-01-07 18:16:43 · 1884 阅读 · 0 评论 -
Linux网络编程 - 套接字的多种可选项
套接字具有多种特性,这些特性可通过可选项更改。本文中将介绍更改套接字可选项的方法,并以此为基础进一步观察套接字内部。原创 2022-01-05 18:56:10 · 1462 阅读 · 0 评论 -
Linux网络编程 - 域名(DNS)及网络地址
域名与网络地址之间的关系。原创 2022-01-04 18:12:22 · 2740 阅读 · 1 评论 -
Linux网络编程 - 优雅地断开TCP套接字连接
本博文将讨论如何优雅断开互相连接的套接字。之前用的方法不够优雅,是因为,我们是调用 close()函数单方面断开连接的。原创 2022-01-03 00:15:28 · 3256 阅读 · 0 评论 -
Linux网络编程 - 基于UDP的服务器端/客户端
一 理解UDP1.0 UDP协议简介UDP(User Datagram Protocol,用户数据报协议) [RFC 768]UDP协议的数据传输单元叫 UDP用户数据报,而TCP协议的数据传输单元叫 TCP报文段(segment)。UDP在传送数据前不需要先建立连接。远地主机的运输层在收到UDP报文段后,不需要给出任何确认。虽然UDP不提供可靠交付服务,但在某些情况下却是一种最有效的工作方式。下图给出了一些应用和应用层协议主要使用的运输层协议(UDP和TCP)。图1-1 使用U.原创 2022-01-01 16:55:47 · 3144 阅读 · 0 评论 -
Linux网络编程 - 基于TCP的服务器端/客户端(2)
在上一篇博文中,我们实现了回声服务器端/客户端程序,并且还遗留一个回声客户端程序存在的一个问题。在本篇博文中,我们将给出遗留问题的解决方案,并详细讨论TCP的工作原理。原创 2021-12-31 11:28:49 · 2507 阅读 · 1 评论 -
Linux网络编程 - 基于TCP的服务器端/客户端(1)
一 理解 TCP 和 UDP 根据数据传输方式的不同,基于网络传输协议的套接字一般分为TCP套接字和UDP套接字。因为TCP是面向连接的,因此又称为基于流(stream)的套接字。TCP(Transmission Control Protocol,传输控制协议) 意为“对数据传输过程进行控制”。 UDP(User Datagram Protocol,用户数据包协议)1.1 计算机网络体系结构 计算机网络是一个非常复杂的系统。目前全世界最大的计算机网络系统叫因特网(...原创 2021-12-29 23:18:33 · 3033 阅读 · 0 评论 -
Linux网络编程 - 套接字与协议族
一 理解网络编程和套接字(socket)1.1 网络编程和套接字概要网络编程就是编程程序使两台连网的计算机可以互相交换数据。那么,这两台计算机之间用什么传输数据呢?首先需要物理连接。如今大部分计算机都已连接到庞大的互联网,因此不用担心这点。再此基础上,只需考虑如何编写数据传输软件。但实际上这也不用愁,因为操作系统会提供名为“套接字(socket)”的部件。套接字是网络数据传输时用的软件设备,我们可以通过套接字完成数据的网络传输,因此网络编程又称为套接字编程。 那为什...原创 2021-12-24 16:38:29 · 1912 阅读 · 0 评论 -
Linux网络编程 - 地址族与数据序列
一 分配给套接字的IP地址与端口号IP是 Internet Protocol(网络协议)的简写,是为了收发网络数据而分配给计算机的值。端口号(Port)是为了区分在同一操作系统内不同套接字(Socket)而设置的,端口号只具有本地意义,它只是为了标识本计算机应用层中的各个进程在和运输层进行数据交互时的层间接口。在互联网不同计算机中,相同的端口号是没有关联的。16 位的端口号可允许有 65535 个不同的端口号,这个数目对于一个计算机来说是足够用的。1.1 网络地址为使计算机连...原创 2021-12-22 17:21:54 · 1975 阅读 · 0 评论 -
TCP协议-TCP粘包问题
一、前言 我们知道,TCP是一个面向字节流的传输层协议。“流” 意味着 TCP 所传输的数据是没有边界的。这不同于 UDP 协议提供的是面向消息的传输服务,其传输的数据是有边界的。TCP 的发送方无法保证对方每次收到的都是一个完整的数据包。于是就有了粘包、拆包问题的出现。粘包、拆包问题只发生在TCP协议中。二、什么是粘包、拆包?假设客户端向服务器连续发送了两个数据包,用 packet1 和 packet2 来表示,那么服务端收到的数据可以分为下面三种情况:第一种情况,接收端正常...原创 2021-08-26 23:59:55 · 10159 阅读 · 0 评论