![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
tcp/ip
文章平均质量分 79
mali378287007
整理,总结,共享,提高
展开
-
《C++新经典Linux C++通信架构实战》第2章 进入Nginx之门
《Linux C++通信架构实战》第2章安装前提nginx源码目录编译安装启动和使用Nginx整体结构、进程模型Nginx整体结构Nginx进程模型细说Nginx,轻量级Web服务器,并发处理百万级别的TCP连接,运行稳定,热部署(运行时升级),高度模块化设计,自由许可证,高并发。用到epoll高并发支持技术,高性能、高扩展性、高可靠性(高稳定性)。用到许多编程技术,内存池、进程池、事件驱动等。安装前提epoll要求Linux内核为2.6及以上。uname -aPCRE库,用于支持解原创 2022-01-19 14:36:24 · 3625 阅读 · 0 评论 -
《Unity3D网络游戏实战》第7章
《Unity3D网络游戏实战》第7章服务端架构总体架构模块划分游戏流程Json编码解码添加协议文件服务端架构总体架构单进程服务端结构。处理客户端的消息客户端与服务端通过TCP连接并传递数据。存储玩家数据MySQL数据库保存玩家数据。模块划分网络底层处理网络连接的底层模块,有粘包半包、协议解析等功能。消息处理游戏逻辑层,比如收到MsgMove协议,服务端会记录玩家坐标,然后广播。事件处理玩家上线和下线等。上线,初始化;下线,数据记录。数据库底层提供保存玩家数据、读原创 2022-02-06 20:06:56 · 2194 阅读 · 0 评论 -
《Unity3D网络游戏实战》第6章
《Unity3D网络游戏实战》第6章网络模块设计对外接口内部设计网络事件事件类型监听列表分发事件连接服务端ConnectConnectCallback测试关闭连接isClosingClose测试Json协议协议类使用JsonUtility协议格式协议文件协议体的编码解码协议名的编码解码发送数据SendSendCallback测试消息事件接收数据心跳机制网络模块设计对外接口public static class NetManager { //连接Connect("127.0.0.1", 8888)原创 2022-02-02 07:33:22 · 399 阅读 · 0 评论 -
《Unity3D网络游戏实战》第5章
《Unity3D网络游戏实战》第5章TCP协议应用层传输层网络层网络接口数据传输流程TCP连接的建立TCP数据传输TCP连接终止常用TCP参数ReceiveBufferSizeSendBufferSizeNoDelayTTLReuseAddressLingerStateClose的恰当时间异常处理心跳机制完整代码TCP协议网络传输不稳定,需要进行多次编码和校验来确保数据的有效传输。应用层应用程序,游戏程序。传输层传输层协议收到二进制数据后,进行一系列加工,并提供数据流传送、可靠性检验、流量控制等原创 2022-01-29 20:41:11 · 4896 阅读 · 0 评论 -
《Unity3D网络游戏实战》第3章
《Unity3D网络游戏实战》第3章网络模块委托通信协议消息队列NetManager类测试网络模块服务端消息处理反射机制消息处理函数事件处理角色死亡:Die协议网络模块给网络模块添加回调方法,当收到某种消息时就自动调用某个函数,分开游戏逻辑和底层模块。委托回调函数的实现方式,用于实现消息分发。委托是一个类,定义方法类型,函数指针。使用委托(delegate)需要:声明一个delegate类型,与传递方法有相同参数和返回值类型;创建delegate对象,增删方法;调用委托。Delegat原创 2022-01-24 21:12:23 · 1959 阅读 · 2 评论 -
《Unity3D网络游戏实战》第4章
《Unity3D网络游戏实战》第4章TCP数据流系统缓冲流TCP数据流系统缓冲流收到对端数据时,操作系统会将数据放入Socket的接收缓冲区中。Socket的Receive方法只是提取接收缓冲区数据,接收缓冲区数据为空时,Receive会阻塞,直到里面有数据。Socket的Send方法只是将数据写入到发送缓冲区,具体发送由操作系统负责。发送缓冲区数据满了,Send会阻塞。...原创 2022-01-22 07:58:19 · 418 阅读 · 0 评论 -
《C++新经典Linux C++通信架构实战》第3章 Nginx开发初步
《Linux C++通信架构实战》第3章终端和进程的关系文件权限符"drwxrwxrwx", read®, write(w), execute(x)。d表示目录。3组,当前用户权限,同组用户权限,其他用户权限。目录权限,r能被浏览(ls);w能新建、删除、修改、移动目录内的文件;x进入目录权限(cd)。终端和进程的关系终端与bash进程每个虚拟终端(pts)连到虚拟机,都会打开一个bash进程(shell壳)。输入命令黑窗就是bash(shell,命令行解释器是个可执行程序),用于解释用户输原创 2022-01-21 17:23:17 · 4293 阅读 · 2 评论 -
《C++新经典Linux C++通信架构实战》第1章 课程介绍
《Linux C++通信架构实战》第1章VS2019安装VMware Workstation虚拟机安装UbuntuUbuntu安装设置固定IP地址修改配置文件以固定IP地址远程连接安装编译工具gcc、g++等共享目录关机VS2019安装下载Visual Studio 2019 Community,安装时选择“使用C++的桌面开发”和“通用Windows平台开发”两个选项。快捷键Ctrl+F5编译、链接、生成、运行。VMware Workstation虚拟机安装UbuntuUbuntu安装设置用户原创 2022-01-19 12:35:04 · 2138 阅读 · 0 评论 -
《Unity3D网络游戏实战》第2章
《Unity3D网络游戏实战》第2章异步代码异步客户端异步代码Async.csusing System;using System.Threading;namespace Async { class MainClass { public static void Main (string[] args) { Timer timer = new Timer(Timeout, null, 2000, 0); Thread.Sleep(2000*2); Console.WriteL原创 2022-01-18 22:07:38 · 1166 阅读 · 0 评论 -
《TCP/IP网络编程》第23章 IOCP
《TCP/IP网络编程》第23章通过重叠I/O理解IOCP非阻塞模式的套接字纯重叠方式实现回声服务器端重新实现客户端从重叠I/O模型到IOCP模型分阶段实现IOCP程序创建“完成端口"连接完成端口对象和套接字确认完成端口已完成的I/O和线程的I/O处理IOCP回声服务器端IOCP特点通过重叠I/O理解IOCPIOCP(Input Output Completion Port,输入输出完成端口)。非阻塞模式的套接字SOCKET hLisnSock;int mode=1;hLisnSock=WSA原创 2022-01-18 13:43:00 · 282 阅读 · 0 评论 -
《TCP/IP网络编程》第22章 重叠I/O模型
《TCP/IP网络编程》第22章理解重叠I/O模型重叠I/O重叠I/O的重点不在于I/O创建重叠I/O套接字理解重叠I/O模型异步方式处理I/O的方法。重叠I/O同一线程内部向多个目标传输(或从多个目标接收)数据引起的I/O重叠现象。需要调用的I/O函数立即返回,非阻塞异步。重叠I/O的重点不在于I/OWindows中重叠I/O的重点并非I/O本身,而是如何确认I/O完成时的状态。非阻塞模式的输入输出需要另外确认执行结果。Windows平台下重叠I/O模型由非阻塞异步I/O函数和确认I/O完原创 2022-01-17 15:30:14 · 710 阅读 · 1 评论 -
《TCP/IP网络编程》第21章 异步通知I/O模型
《TCP/IP网络编程》第21章理解异步通知I/O模型同步和异步同步I/O缺点及异步解决方案异步通知I/O模型实现异步通知I/O模型WSAEventSelect函数manual-reset模式事件对象的创建验证是否发生了事件区分事件类型异步通知I/O模型回声服务器理解异步通知I/O模型同步和异步同步的关键是函数的调用及返回时刻,以及数据传输的开始和完成时刻。调用send函数的瞬间开始传输数据,send函数执行完(返回)的时刻完成数据传输(数据完全传输到输出缓冲,操作系统完成网络传输)。调用rec原创 2022-01-17 11:20:42 · 727 阅读 · 0 评论 -
《TCP/IP网络编程》第24章 制作HTTP服务器端
《TCP/IP网络编程》第24章HTTP概要Web服务器端HTTP简单的Web服务器端Windows多线程Web服务器端Linux多线程Web服务器端HTTP概要HTTP(Hypertext Transfer Protocol,超文本传输协议)服务器端,即Web服务器端。Web服务器端基于HTTP协议,将网页对应文件传输给用户端的服务器端。Hypertext(超文本,可跳转的文本,点击鼠标跳转到任意页面)是可以根据客户端请求而跳转的结构化信息。HTTP协议是以超文本传输为目的而设计的应用层协议,原创 2022-01-16 22:06:45 · 406 阅读 · 0 评论 -
《TCP/IP网络编程》第20章 Windows中的线程同步
《TCP/IP网络编程》第20章同步方法分类及CRITICAL_SECTION同步用户模式(User mode)和内核模式(Kernal mode)用户模式同步内核模式同步基于CRITICAL_SECTION的同步内核模式的同步方法基于互斥量(Mutual Exclusion)对象的同步基于信号量对象的同步基于事件对象的同步Windows平台下多线程服务器端同步方法分类及CRITICAL_SECTION同步用户模式(User mode)和内核模式(Kernal mode)Windows操作系统运行方式原创 2022-01-15 21:51:16 · 428 阅读 · 0 评论 -
《Unity3D网络游戏实战》第1章
《Unity3D网络游戏实战》第1章查看本机IP地址VS2019命令行编译C#Echo服务器端Echo客户端查看本机IP地址ipconfigVS2019命令行编译C#//搜索栏打开命令行编译窗口Developer Command Prompt for VS 2019//csc *.cs//帮助-help//指定生成文件名-out:<file>//指定生成文件类型/target:appcontainerexe To create an .exe file for原创 2022-01-15 12:54:29 · 718 阅读 · 0 评论 -
《TCP/IP网络编程》第19章 Windows平台下线程的使用
《TCP/IP网络编程》第19章内核对象(Kernel Objects)定义内核对象归操作系统所有Windows线程创建进程与线程创建线程创建线程安全函数内核对象的2种状态内核对象状态及状态查看WaitForSingleObject & WaitForMultipleObjects内核对象(Kernel Objects)定义Windows操作系统创建并管理的资源(Resouce),进程、线程、文件、信号量、互斥量等。不同资源管理方式有差异。文件管理,注册并更新文件相关的数据I/O位置、原创 2022-01-14 15:43:20 · 1499 阅读 · 4 评论 -
《TCP/IP网络编程》第18章 多线程服务器端的实现
《TCP/IP网络编程》第18章线程线程与进程差异线程创建及运行线程创建和执行流程线程多线程模型缺点:创建线程过程有一定开销进程间数据交换,需要特殊的IPC技术上下文切换(Context Switching)是进程的最大开销。上下文切换,指分时CPU切换线程运行时,需要保存上一个进程相关信息。线程(Thread),轻量级进程,最低限度降低进程的各种劣势。线程相比进程优势:线程创建和上下文切换更快线程间交换数据无需特殊技术线程与进程差异每个进程拥有独立的内存空间,由数据区(保存原创 2022-01-14 13:56:53 · 299 阅读 · 0 评论 -
《TCP/IP网络编程》第17章 优于select的epoll
《TCP/IP网络编程》第17章原创 2022-01-12 19:05:57 · 837 阅读 · 0 评论 -
《TCP/IP网络编程》第16章 关于I/O流分离的其他内容
《TCP/IP网络编程》第16章分离I/O流文件描述符的复制和半关闭复制文件描述符复制文件描述符后分离“流”分离I/O流sep_serv.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#define BUF_SIZE 102原创 2022-01-12 13:46:51 · 330 阅读 · 0 评论 -
《TCP/IP网络编程》第15章 套接字和标准I/O
《TCP/IP网络编程》第15章标准I/O函数优点缺点标准I/O函数与系统函数性能对比使用标准I/O函数fdopen函数转换文件描述符为FILE指针fileno函数转换FILE指针为文件描述符使用基于套接字的标准I/O函数标准I/O函数优点良好移植性(Portability)利用缓冲提高性能套接字缓冲主要用于实现TCP协议,标准I/O函数缓冲主要用于提高性能。缺点不容易进行双向通信有时可能频繁调用fflush函数需要以FILE结构体指针形式返回文件描述符打开文件读写,切换读写工作原创 2022-01-12 13:14:22 · 189 阅读 · 0 评论 -
《TCP/IP网络编程》第13章 多种I/O函数
《TCP/IP网络编程》第13章send&recvreadv&writevWindows实现send&recv#include <sys/socket.h>//成功字节,失败-1ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags);//成功字节(收到EOF返回0),失败-1ssize_t recv(int sockfd, void *buf, size_t nbytes, in原创 2022-01-12 10:26:46 · 475 阅读 · 0 评论 -
《TCP/IP网络编程》第14章 多播与广播
《TCP/IP网络编程》第14章多播TTL(Time to Live,生存时间)加入多播组实现多播广播广播方式修改套接字属性实现广播Windows实现多播多播(Multicast)基于UDP,UDP数据传输以单一目标进行,多播数据同时传递到加入(注册)特定组的大量主机(同时向多个主机传递数据)。多播的数据传输特点:多播服务器端针对特定多播组,只发送一次数据。该组内所有客户端都会收到数据。多播组数可在IP地址范围内任意增加。加入特定组即可接收发往该多播组的数据。多播组是D类IP地址(224原创 2022-01-11 15:23:41 · 483 阅读 · 0 评论 -
《TCP/IP网络编程》第12章 I/O复用
《TCP/IP网络编程》第12章select函数将多个文件描述符集中到一起统一监视:是否存在套接字接收了数据?无需阻塞传输数据的套接字有哪些?哪些套接字发生了异常?监视项称为事件,发送监视项对应情况称为发生了事件。...原创 2022-01-10 16:02:15 · 365 阅读 · 0 评论 -
《TCP/IP网络编程》第11章 进程间通信
《TCP/IP网络编程》第11章进程间通信(inter Process Communication)意味着两个不同进程间可以交换数据。管道并非进程的资源,而是和套接字一样,属于操作系统。#include <unistd.h>//成功0,失败-1int pipe(int filedes[2]);//files[0],接收文件描述符//files[1],发送文件描述符pipe1.c#include <stdio.h>#include <unistd.h>原创 2022-01-10 13:43:25 · 273 阅读 · 0 评论 -
《TCP/IP网络编程》第10章 多进程服务器端
《TCP/IP网络编程》第10章进程Process僵尸(Zombie)进程产生原因wait函数销毁僵尸进程waitpid函数销毁僵尸进程信号处理(Signal Handling)信号与signal函数sigaction函数处理信号信号处理技术消灭僵尸进程多线程并发服务器分割TCP的I/O程序并发服务器端实现模型和方法:多进程服务器:通过创建多个进程提供服务。多路复用服务器:通过捆绑并统一管理I/O对象提供服务。多线程服务器:通过生成与客户端等量的线程提供服务。进程Process占用内存空间的原创 2022-01-10 12:54:49 · 348 阅读 · 0 评论 -
《TCP/IP网络编程》第9章 套接字的多种可选项
《TCP/IP网络编程》第9章套接字可选项套接字可选项#include <sys/socket.h>//成功0,失败-1int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);//成功0,失败-1int setsockopt(int sock, int level, int optname, const void *optval, socklen_t *optlen);so原创 2022-01-08 18:54:42 · 234 阅读 · 0 评论 -
《TCP/IP网络编程》第8章 域名及网络地址
《TCP/IP网络编程》第8章//查看域名信息ping www.naver.com//查看默认DNS服务器nslookup原创 2022-01-07 12:27:44 · 794 阅读 · 0 评论 -
《TCP/IP网络编程》第7章 优雅地断开套接字连接
《TCP/IP网络编程》第7章半关闭shutdown函数半关闭文件传输服务器端半关闭文件传输客户端Windows实现半关闭shutdown函数#include <sys/socket.h>//成功0,失败-1int shutdown(int sock, int howto);//SHUT_RD,断开输入流//SHUT_WR,断开输出流//SHUT_RDWR,断开输入输出流半关闭文件传输服务器端file_server.c#include <stdio.h>#in原创 2022-01-07 09:45:23 · 826 阅读 · 0 评论 -
《TCP/IP网络编程》第6章 基于UDP的服务器端/客户端
《TCP/IP网络编程》第6章UDP相关函数UDP回声服务器端UDP回声客户端有数据边界的UDP服务器端有数据边界的UDP客户端注册目标IP和Port的UDP套接字Windows平台实现UDP相关函数#include <sys/socket.h>//成功字节数,失败-1ssize_t sendto(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *to, socklen_t addrlen);#inclu原创 2022-01-06 21:20:01 · 417 阅读 · 0 评论 -
《TCP/IP网络编程》第5章 基于TCP的服务器端/客户端(2)
《TCP/IP网络编程》第5章Linux计算器服务器端Linux计算器客户端Windows计算器服务器端Windows计算器客户端Linux计算器服务器端op_server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#d原创 2022-01-06 16:43:35 · 665 阅读 · 1 评论 -
《TCP/IP网络编程》第4章 基于TCP的服务器端/客户端(1)
《TCP/IP网络编程》第4章Linux迭代回声服务器端Linux迭代回声客户端Windows迭代回声服务器端Windows迭代回声客户端Linux迭代回声服务器端echo_server.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h&原创 2022-01-06 13:17:16 · 212 阅读 · 0 评论 -
《TCP/IP网络编程》第3章 地址族与数据序列
《TCP/IP网络编程》第3章IP与Port网络地址(Internet Address)IP与PortInternet Protocol(网络协议)网络地址(Internet Address)IPv4(Internet Protocol version 4),4字节地址族IPv6(Internet Protocol version 6),16字节地址族IPv4的4字节地址分为网络地址和主机(计算机)地址。...原创 2022-01-06 10:12:25 · 561 阅读 · 0 评论 -
《TCP/IP网络编程》第2章 套接字类型与协议设置
《TCP/IP网络编程》第2章协议族(Protocal Family)套接字类型(Type)TCP客户端编译运行Windows平台客户端编译运行#include <sys/socket.h>//成功文件描述符,失败-1int socket(int domain, int type, int protocol);协议族(Protocal Family)PF_INET,IPv4PF_INET6,IPv6PF_LOCAL,本地UNIXPF_PACKET,底层套接字PF_IPX,IP原创 2022-01-05 11:25:11 · 277 阅读 · 0 评论 -
《TCP/IP网络编程》第1章 理解网络编程和套接字
TCP/IP网络编程套接字相关函数服务器端客户端编译运行Linux文件操作文件描述符打开文件关闭文件写入文件读取文件文件描述符和套接字Windows套接字vs2019命令行编译相关函数服务器端客户端编译运行套接字相关函数创建套接字#include <sys/socket.h>//成功返回文件描述符,失败返回-1int socket(int domain, int type, int protocol);绑定IP和Port#include <sys/socket.h原创 2022-01-05 09:48:28 · 446 阅读 · 0 评论