#pragma once
#include <WinSock2.h>
#include <MSWSock.h>
#include <Winioctl.h>
#include <Winnetwk.h>
#include <WS2tcpip.h>
#include <MSTcpIP.h>
typedef SOCKET VTCP_SOCKET;
typedef unsigned long VTCP_SN; //序号类型
#define VTCP_TIMER (20) //基本时钟
#define VTCP_TIMER_TIMES (1000 / VTCP_TIMER) //基本时钟每秒次数
#define VTCP_PACKET_GROUP (3)
#define VTCP_PACKET_SIZE_MIN (32)
#define VTCP_PACKET_SIZE_MAX (16 * 1024)
#define VTCP_PACKET_POOL_MIN (2)
#define VTCP_PACKET_POOL_MAX (1024)
#define VTCP_PACKET_LOSS_MIN (0)
#define VTCP_PACKET_LOSS_MAX (100)
#define VTCP_SN_INTERVAL(s1,s2) (int(VTCP_SN(s1) - VTCP_SN(s2))) //计算序列号间隔
enum EVTcpClass//句柄类型
{
VTCP_CLASS_CVSocket = 100,//内部保留
VTCP_CLASS_CVSocketEx = 101,//内部保留
VTCP_CLASS_CVSocketExTcp = 102,//内部保留
VTCP_CLASS_CVSocketExTcpAccept = 103,//内部保留
VTCP_CLASS_CVSocketExTcpConnShare = 104,//内部保留
VTCP_CLASS_CVSocketExTcpConnect = 200,//客户器
VTCP_CLASS_CVSocketExListen = 201,//服务器
};
enum EVTcpSo
{
VTCP_SO_LINGER = 1,//逗留时间(LINGER)
VTCP_SO_CONTIMEO = 2,//连接超时(int)
VTCP_SO_RCVTIMEO = 3,//接收超时(int)
VTCP_SO_SNDTIMEO = 4,//发送超时(int)
VTCP_SO_KEEPALIVE = 5,//保活设置(keepalive)
VTCP_SO_PACKET_SIZE = 6,//最大包大小(int)
VTCP_SO_PACKET_COUNT = 7,//最大包缓存(int)
VTCP_SO_PACKET_LOSS_PRECENT = 8,//最大丢包率(int)(百分比)
VTCP_SO_P2P_SERVER = 200,//代理服务器地址(sockaddr)
VTCP_SO_DEBUG_CWND = 100,//内部保留调试使用
VTCP_SO_DEBUG_COUNT = 101,//内部保留调试使用
};
enum EVTcpPktCmd//包命令
{
VTCP_PKTCMD_CONNECT = (0x10),//连接
VTCP_PKTCMD_CONNECT_ACK = (0x11),//连接接收
VTCP_PKTCMD_CONNECT_ACK_DELAY = (0x12),//连接推迟(队列中)
VTCP_PKTCMD_CONNECT_ACK_REFUSE = (0x13),//连接拒绝(队列已满)
VTCP_PKTCMD_DATA = (0x14),//数据流
VTCP_PKTCMD_DATA_ACK = (0x15),//数据流应答
VTCP_PKTCMD_RESET = (0x16),//关闭通道
VTCP_PKTCMD_RESET_ACK = (0x17),//关闭通道应答
VTCP_PKTCMD_SYNC = (0x18),//同步控制包
VTCP_PKTCMD_SYNC_ACK = (0x19),//同步控制包
// VTCP_PKTCMD_P2P_LOGON = (0x80),//P2P登陆包
// VTCP_PKTCMD_P2P_LOGON_ACK = (0x81),//P2P登陆包
// VTCP_PKTCMD_P2P_LOGOFF = (0x82),//P2P登出包
// VTCP_PKTCMD_P2P_LOGOFF_ACK = (0x83),//P2P登出包
// VTCP_PKTCMD_P2P_OPEN_HOLE = (0x84),//P2P打洞包
// VTCP_PKTCMD_P2P_OPEN_HOLE_ACK = (0x85),//P2P打洞包
};
enum EVTcpPktCmdMsk
{
VTCP_PKTCMDMSK_SEND = (0x0100),//包已经发出
VTCP_PKTCMDMSK_SEND_REPEAT = (0x0200),//包超时重传
VTCP_PKTCMDMSK_SEND_REPEAT_FAST = (0x0400),//包快速重传
VTCP_PKTCMDMSK_MUST_ACK = (0x0800),//包必须应答
VTCP_PKTCMDMSK_R1000 = (0x1000),//保留
VTCP_PKTCMDMSK_R2000 = (0x2000),//保留
VTCP_PKTCMDMSK_R4000 = (0x4000),//保留
VTCP_PKTCMDMSK_R8000 = (0x8000),//保留
};
enum EVTcpStatus//状态代码
{
VTCP_STATUS_NULL = 0x00,//初始化
VTCP_STATUS_CREATED = 0x01,//创建
VTCP_STATUS_BINDED = 0x02,//绑定
VTCP_STATUS_LISTENED = 0x03,//监听
VTCP_STATUS_CONNECT = 0x04,//连接
VTCP_STATUS_CONNECTED = 0x05,//连接完成
VTCP_STATUS_CONNRESET = 0x06,//连接复位(被动)
VTCP_STATUS_CONNCLOSE = 0x07,//连接关闭(主动)
VTCP_STATUS_CLOSED = 0x08,//关闭完成
};
//////////////////////////////////////////////////////////////////////////
typedef struct SVTcpStatCount
{
int sizeOfStruct; //input
int testRapid;
int64 count_recv_bytes;
int64 count_recv_bytes_cur;
int64 count_send_bytes;
int64 count_send_bytes_cur;
int64 count_do_send_data;
int64 count_do_send_data_repeat;
int64 count_do_send_data_ack;
int64 count_do_send_sync;
int64 count_do_send_sync_ack;
int64 count_do_send_reset;
int64 count_do_send_reset_ack;
int64 count_on_recv_data;
int64 count_on_recv_data_repeat;
int64 count_on_recv_data_ack;
int64 count_on_recv_sync;
int64 count_on_recv_sync_ack;
int64 count_on_recv_reset;
int64 count_on_recv_reset_ack;
DWORD tcp_sn_send_cur; //发送序号当前
DWORD tcp_sn_send_min; //发送序号底端
DWORD tcp_sn_send_max; //发送序号高端
DWORD tcp_sn_send_cwd; //发送序号窗口
DWORD tcp_sn_recv_cur; //接收序号当前
DWORD tcp_sn_recv_min; //接收序号底端
DWORD tcp_sn_recv_max; //接收序号高端
DWORD tcp_sn_recv_cwd; //接收序号窗口
int tcp_rtt_cur; //发包往返周期(RTT)
int tcp_rtt_min; //发包往返周期(RTT 最小)
int tcp_rtt_max; //发包往返周期(RTT 最大)
int tcp_cwnd; //窗口
int tcp_cwnd_flight; //窗口飞行个数
int64 tcp_cwnd_send_bytes; //窗口实时发送字节
int64 tcp_cwnd_send_bytes_cur; //窗口实时发送速度
int64 tcp_cwnd_recv_bytes; //窗口实时接收字节
int64 tcp_cwnd_recv_bytes_cur; //窗口实时接收速度
int QA_recv_count;
int QA_send_count;
int QP_recv_count;
int QP_send_count;
BYTE QP_send_grap[128];
BYTE QP_recv_grap[128];
}S_VTCP_STAT_COUNT,*PS_VTCP_STAT_COUNT;
//////////////////////////////////////////////////////////////////////////
#pragma pack(push)
#pragma pack(1)
typedef struct SVTcpPktHdr //12
{
unsigned short ucmd; //命令掩码
unsigned short usid; //标识(句柄)
unsigned short usid_peer; //标识(句柄)
unsigned short sin_port; //中转
in_addr sin_addr; //中转
}S_VTCP_PKT_HDR,*PS_VTCP_PKT_HDR;
/*
typedef struct SVTcpPktHdrIPV6 //24
{
unsigned short ucmd; //命令(掩码)
unsigned short usid_peer; //标识(句柄)
unsigned short usid_peer_peer; //标识(句柄)
unsigned short sin6_port; //中转
in_addr6 sin6_addr; //中转
}S_VTCP_PKT_HDR_IPV6,*PS_VTCP_PKT_HDR_IPV6;
*/
typedef struct SVTcpPktConnect //12
{
int tcp_packet_size; //1024
int tcp_packet_pool; //128
int tcp_packet_loss; //30
}S_VTCP_PKT_CONNECT,*PS_VTCP_PKT_CONNECT;
typedef struct SVTcpPktConnectAck //12
{
int tcp_packet_size; //1024
int tcp_packet_pool; //128
int tcp_packet_loss; //30
}S_VTCP_PKT_CONNECT_ACK,*PS_VTCP_PKT_CONNECT_ACK;
typedef struct SVTcpPktData //12 + data
{
unsigned long utime; //时间戳
VTCP_SN usn; //数据包序号
VTCP_SN usn_fst; //数据包序号(快速)
char data[1]; //数据包数据
}S_VTCP_PKT_DATA,*PS_VTCP_PKT_DATA;
typedef struct SVTcpPktDataAck //20 + 1 + n = (>=21 bytes)
{
unsigned long utime; //时间戳
VTCP_SN usn; //数据包序号
VTCP_SN usn_fst; //数据包序号(快速)
VTCP_SN usn_recv_cur; //接受端当前序号
VTCP_SN usn_recv_syn; //接受端同步序号
unsigned char mapBytes; //映像图字节大小
unsigned char map[VTCP_PACKET_POOL_MAX / 8]; //映像图
}S_VTCP_PKT_DATA_ACK,*PS_VTCP_PKT_DATA_ACK;
typedef struct SVTcpPktSync
{
}S_VTCP_PKT_SYNC,*PS_VTCP_PKT_SYNC;
typedef struct SVTcpPktSyncAck //8+1+n
{
VTCP_SN usn_fst; //数据包序号(快速)
VTCP_SN usn_recv_syn; //接受端同步序号
VTCP_SN usn_recv_cur; //接受端当前序号
unsigned char mapBytes; //映像图字节大小
unsigned char map[VTCP_PACKET_POOL_MAX / 8]; //映像图
}S_VTCP_PKT_SYNC_ACK,*PS_VTCP_PKT_SYNC_ACK;
typedef struct SVTcpPktReset
{
}S_VTCP_PKT_RESET,*PS_VTCP_PKT_RESET;
typedef struct SVTcpPktResetAck
{
}S_VTCP_PKT_RESET_ACK,*PS_VTCP_PKT_RESET_ACK;
typedef struct SVTcpPkt
{
SVTcpPktHdr hdr;
union
{
SVTcpPktConnect connect;
SVTcpPktConnectAck connectAck;
SVTcpPktData data;
SVTcpPktDataAck dataAck;
SVTcpPktSync sync;
SVTcpPktSyncAck syncAck;
SVTcpPktReset reset;
SVTcpPktResetAck resetAck;
char buffer[1];
}body;
}S_VTCP_PKT,*PS_VTCP_PKT;
/*
typedef struct SVTcpPktIPV6
{
SVTcpPktHdrIPV6 hdr;
union
{
SVTcpPktConnect connect;
SVTcpPktConnectAck connectAck;
SVTcpPktData data;
SVTcpPktDataAck dataAck;
SVTcpPktSync sync;
SVTcpPktSyncAck syncAck;
SVTcpPktReset reset;
S
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
VTCP是虚拟TCP协议缩写,它实现了UDP可开传输,UDP本来是一种不可靠的网络协议,但在有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。因此我们设计出了一种新的可靠UDP协议(VTCP),自动实现UDP数据传输的可靠性。
资源推荐
资源详情
资源评论
收起资源包目录
vtcpsdk.rar (52个子文件)
vtcpsdk
vtcp2.0.rar 41KB
vtcp_getsockopt.htm 99KB
default.htm 126KB
vtcp5.0.rar 240KB
vtcp_connect.htm 34KB
vtcp.dll 33KB
vtcp_io_set_hook_for_recv_packet.htm 49KB
vtcp_getoverlapresult.htm 36KB
vtcp_getpeername.htm 34KB
P2PServer.rar 204KB
vtcp_iocp.htm 35KB
VTcp.h 11KB
vtcpT1.rar 5.17MB
vtcp3.0.rar 56KB
vtcp_connectex.htm 48KB
vtcp_getsockname.htm 34KB
vtcp_acceptex.htm 51KB
vtcp_send.htm 36KB
vtcp_io_send_packet_ex.htm 50KB
vtcpT0.jpg 85KB
vtcp_sendex.htm 51KB
VTCP10.rar 252KB
vtcp_socket_share.htm 36KB
vtcpT2.rar 27KB
vtcp_closesocket.htm 32KB
vtcp_io_set_hook_for_send_packet.htm 48KB
vtcp_io_send_packet.htm 48KB
vtcp8.0.rar 245KB
vtcpT0.rar 274KB
vtcp6.0.rar 218KB
vtcp4.0.rar 225KB
vtcp_setsockopt.htm 94KB
default.files
image004.gif 24KB
image002.gif 17KB
image006.gif 31KB
vtcp.lib 9KB
vtcp1.0.rar 5.36MB
vtcp_startup.htm 42KB
vtcp_accept.htm 42KB
vtcpT1.jpg 155KB
vtcp_recv.htm 36KB
vtcp_bind.htm 39KB
vtcp_cancel.htm 31KB
vtcp_io_recv_packet.htm 50KB
vtcp7.0.rar 232KB
vtcp_listen.htm 33KB
VTCP9.0.rar 251KB
vtcp_socket.htm 41KB
vtcp_io_set_packet_hdr.htm 42KB
UnitVTCP.pas 9KB
vtcp_cleanup.htm 30KB
vtcp_io_recv_packet_ex .htm 53KB
共 52 条
- 1
无花果
- 粉丝: 38
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 智能笔项目源代码全套技术资料.zip
- 在线考试系统项目源代码全套技术资料.zip
- 高等数学学习资料合集 高等数学(工本)mind
- 西门子V90效率倍增-伺服驱动功能库详解简易循环功能库之Homing-V90PN.mp4
- 自考04741计算机网络原理真题及答案及课件
- 基于STM32芯片开发 安防系统 完整作品
- 4_base.apk.1
- 学生导师双选系统项目源代码全套技术资料.zip
- 自考02318《计算机组成原理》试题及答案 2014-2018及课件
- 图书管理系统,仅供参考
- 数据科学与大数据毕业设计系统项目源代码全套技术资料.zip
- 全国自考02197概率论与数理统计(二)试题及答案2014-2019
- CHGCOLOR压缩包
- 多轮自动红队方法提升大语言模型安全性
- python语言kssp爬虫程序代码XQZQ.txt
- 亲测源码云赏V7.0微信视频打赏系统源码已测试完整无错版
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页