
TCP
文章平均质量分 82
huangtianyi1994
奋斗吧 少年!!
展开
-
Tcp造成粘包的原因及解决措施
粘包的概念:TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。粘包可能由发送方造成,也可能由接收方造成。只有TCP有粘包现象,UDP永远不会粘包粘包不一定会发生粘包的原因:发送端原因: 由于TCP协议本身的机制(面向连接的可靠地协议-三次握手机制)客户端与服务器会维持一个连接(Channel),数据在连接不断开的情况下,可以持续不断地将多个数据包发往服务器,但是如果发送的网络数据包太小,那么他本身会启用Nagle算原创 2022-02-24 17:34:13 · 3879 阅读 · 0 评论 -
网络专题六:epoll reactor模式封装
Reactor 模型首先来回想一下普通函数调用的机制:程序调用某函数,函数执行,程序等待,函数将 结果和控制权返回给程序,程序继续处理。Reactor 释义“反应堆”,是一种事件驱动机制。 和普通函数调用的不同之处在于:应用程序不是主动的调用某个 API 完成处理,而是恰恰 相反,Reactor 逆置了事件处理流程,应用程序需要提供相应的接口并注册到 Reactor 上, 如果相应的时间发生,Reactor 将主动调用应用程序注册的接口,这些接口又称为“回调函 数”。原创 2021-10-20 16:15:10 · 253 阅读 · 0 评论 -
Linux下Epoll多路复用的实现 边缘检测存在的诟病
边缘检测的诟病:如果两次连接同时到来,存在一个问题,只会触发一次,会导致丢掉一次连接。 解决办法设置socket为非阻塞。在检测时间信号时,一直便利事件数组,知道对应的socket为0 。下面看看具体的代码实现。#ifdef WIN32#pragma once#ifdef XSOCKET_EXPORTS#define XSOCKET_API __declspec(dllexport)#else#define XSOCKET_API __declspec(dllimport)#endif#.原创 2020-07-20 16:05:19 · 206 阅读 · 0 评论 -
Windows Linux 跨平台简单tcp实现 基于设置socket非阻塞,select连接超时控制。
#ifdef WIN32#pragma once#ifdef XSOCKET_EXPORTS#define XSOCKET_API __declspec(dllexport)#else#define XSOCKET_API __declspec(dllimport)#endif#else#define XSOCKET_API#endif // WIN32//tcp封装 在windows下封装成dll 在linux下封装成.so#include<string>...原创 2020-07-20 13:49:04 · 373 阅读 · 0 评论 -
跨平台 linux及windows中实现的tcp服务端 客户端可采用telnet进行测试 C11多线程实现
#include<stdio.h>//#pragma comment(lib, "Ws2_32.lib")#include <stdlib.h>#include<string.h>#include<thread>#ifdef WIN32#include<windows.h>#else#include <sys/types.h> /* See NOTES */#include <sys/sock...原创 2020-07-13 16:50:30 · 230 阅读 · 0 评论 -
WSAasyncSelect 异步选择消息模型
WSAasyncSelect 异步选择消息模型适用于简单对效率要求不太高的windows窗口程序。该模型windows为用户封装好了线程调用,以消息的方式通知accep/recv等事件是否已经发生,不用一直阻塞等待。下面是这种模型的简单代码实现:主要针对服务器accept 和recv做异步调用 主要看加出的部分:#include <tchar.h>#include ...原创 2020-04-26 15:51:29 · 554 阅读 · 1 评论 -
TCP文件传输-二级流水线高效模式具体代码实现 mutex 条件变量condition_variable futrue运用
相比与上一篇那种线程同步方式,上篇利用async的生命周期作为同步点。而实际情况中 子线程不会一直退出和不断的开启,我门需要人为的控制线程同步且退出.这里我门采用队列的方式,主线程接收完数据往队列里面投递,通知子线程,子线程负责取数据 子线程数据处理结束后会继续通知主线程,主线层继续投递。 最后利用futrue控制程序的退出.//-------------------------------...原创 2020-04-22 17:13:20 · 358 阅读 · 0 评论