原创软件 编程技术 驱动设计 汇编与C 加密解密 系统研究 胡乱收集 进化灵魂 共享资源 点这里
当前位置:首页> 编程技术> VC++UDP实现可靠传输(文件)(虚拟TCP4.0)
 

VC++UDP实现可靠传输(文件)(虚拟TCP4.0)(点击:1364)

关键词: 
使用UDP可靠传输。
使用UDP可靠文件传输。 
使用UDP可靠传输协议RDUP协议。
使用UDP实现可靠文件传输。 
使用UDP协议实现数据可靠传输。 
基于UDP的可靠数据传输协议。 
一种实现可靠UDP传输的拥塞控制方法。


相关技术: 


RUDP协议:可靠用户数据报协议(RUDP:Reliable UDP)。
UDT协议-基于UDP的可靠数据传输协议|UDT,协议,UDP,可靠,数据传输,协议。
UDP无差错传输文件或数据。 


下载VTCP系统SDK: http://www.cnasm.com/down/vtcp4.0.rar


测试程序界面截图:




改进要点:

1.更加稳定可靠。
2.传输速度更快。
3.CPU占有率更低,适应更多的网络环境。
4.编程接口更完美,基本与Winsock api相同。
5.统计变量更多。


以下是二次开发接口(VTCP.H):

#pragma once

//////////////////////////////////////////////////////////////////////////
//设置函数操作名vctp_setsockopt(optname)
//////////////////////////////////////////////////////////////////////////

#define VTCP_OPTNAME_NONBIO 0//设置非阻塞(BOOL*)
#define VTCP_OPTNAME_PACKET 1//设置包参数(SVTcpOptPacket)
#define VTCP_OPTNAME_KEEPALIVE 2//设置活动检测时间(SVTcpOptKeepAlive)
#define VTCP_OPTNAME_RECV_TIMEO 3//设置接收超时(int*)(ms)
#define VTCP_OPTNAME_SEND_TIMEO 4//设置发送超时(int*)(ms)
#define VTCP_OPTNAME_CONNECT_TIMO 5//设置连接超时(int*)(ms)


//////////////////////////////////////////////////////////////////////////
//数据结构
//////////////////////////////////////////////////////////////////////////

typedef struct SVTcpOptPacket
{
WORD packet_data_size;//单包最大大小(UDP包的最大大小)(字节)
WORD packet_count;//包缓存数量(UDP包的缓存大小)

}VTCP_OPT_PACKET,*PVTCP_OPT_PACKET;

typedef struct SVTcpOptKeepAlive
{
int keep_alive;//保持活动超时(毫秒)
int keep_alive_interval;//保持活动时间间隔(毫秒)

}VTCP_OPT_KEEPALIVE,*PVTCP_OPT_KEEPALIVE;

typedef struct SVTcpStatCount
{
INT64 tcp_count_real_recv_data_bytes;
INT64 tcp_count_real_recv_data_bytes_micro;
INT64 tcp_count_real_send_data_bytes;
INT64 tcp_count_real_send_data_bytes_micro;

INT64 tcp_count_recv_data;
INT64 tcp_count_recv_data_ack;
INT64 tcp_count_recv_data_drop;
INT64 tcp_count_recv_sync;
INT64 tcp_count_recv_sync_ack;
INT64 tcp_count_send_data;
INT64 tcp_count_send_data_micro;
INT64 tcp_count_send_data_micro_prv;
INT64 tcp_count_send_data_ack;
INT64 tcp_count_send_data_reps;
INT64 tcp_count_send_data_reps_micro;
INT64 tcp_count_send_data_reps_micro_prv;
INT64 tcp_count_send_sync;
INT64 tcp_count_send_sync_ack;

int tcp_packet_reply;
int tcp_packet_ws_max;
int tcp_packet_ws;
int tcp_packet_data_size;

int tcp_timeout_send;//阻塞模式发送超时
int tcp_timeout_recv;//阻塞模式接收超时
int tcp_keepalive_timeout;//活动超时间
int tcp_keepalive_timeout_dec;//活动超时间递减
int tcp_keepalive_interval;//活动间隔时间
int tcp_keepalive_interval_dec;////活动时间间隔递减

DWORD tcp_sid;
DWORD tcp_sn_send;
DWORD tcp_sn_send_ws;
DWORD tcp_sn_recv;

int tcp_list_count_recv_async;
int tcp_list_count_recv;
int tcp_list_count_send_async;
int tcp_list_count_send;

DWORD tcp_sn_send_first;
DWORD tcp_sn_recv_first;

}VTCP_STAT_COUNT,*PVTCP_STAT_COUNT;


//////////////////////////////////////////////////////////////////////////
//类型声明(API)
//////////////////////////////////////////////////////////////////////////
//无错误返回:ERROR_SUCCESS
//////////////////////////////////////////////////////////////////////////

int WINAPI vtcp_startup(LPWSADATA wsad);
int WINAPI vtcp_socket(int* socket,BOOL bserver);
int WINAPI vtcp_bind(int socket,PSOCKADDR_IN sai,int sailen);
int WINAPI vtcp_listen(int socket,int backlog);
int WINAPI vtcp_accept(int socket,int* sockaccept,PSOCKADDR_IN addr,int* addrlen);
int WINAPI vtcp_acceptex(int socket,int* sockaccept,PSOCKADDR_IN addr,int* addrlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
int WINAPI vtcp_connect(int socket,PSOCKADDR_IN sai,int sailen);
int WINAPI vtcp_connectex(int socket,PSOCKADDR_IN sai,int sailen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
int WINAPI vtcp_send(int socket,PCHAR buf,int len,int flag,int* lpcb);
int WINAPI vtcp_sendex(int socket,PCHAR buf,int len,int flag,int* lpcb,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
int WINAPI vtcp_recv(int socket,PCHAR buf,int len,int flag,int* lpcb);
int WINAPI vtcp_recvex(int socket,PCHAR buf,int len,int flag,int* lpcb,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
int WINAPI vtcp_setsockopt(int socket,int optname,PCHAR optval,int optlen);
int WINAPI vtcp_getpeername(int socket,PSOCKADDR_IN sai,int sailen);
int WINAPI vtcp_getsockname(int socket,PSOCKADDR_IN sai,int sailen);
int WINAPI vtcp_getoverlapresult(int socket,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,DWORD dwWait);
int WINAPI vtcp_getstatcount(int socket,SVTcpStatCount* tsc);
int WINAPI vtcp_close(int socket);
int WINAPI vtcp_cleanup();


 
友情连接
罗云彬编程乐园 AoGo汇编小站 老罗缤纷天地 水色银光 破解勇
80x86汇编小站 SmallWaves Hume的Asm ASM教程下载 X86汇编语言
一块三毛钱 惊涛之帆工作室 CVC(病毒木马) 看雪学院 笨冬瓜
HMX HOME NCPH官方 强档LINUX L4FDYOS sunwear的blog
安全焦点 未雨绸缪 雷雨、白云、hurk 极端的混混 D哥博客
赛迪网网络安全 红狼安全小组 岁月联盟 雄鹰基地 MILWORM
FRSIRT 驱动开发网 CZY CCG论坛 HNC网络联盟

欢迎加入CNASM站群QQ联盟

本站LOGO

音乐欣赏

管理登陆

email:whg0001⊙163.com QQ:312016 无花果-编程驿站 copyright 1999-2005 all rights reserved.

蜀ICP备05016108(四川★成都)欢迎与我合作