设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 其他开发语言 >> 与基于udp协议的tracker服务器进行交互
精品推荐
其他开发语言点击TOP10
·数字小键盘指法练习
·用C语言编通讯录程序(初学者级别的)
·Modem 常用AT指令集
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
·Thinking in C++ 简体中文第二版
·debug和release的区别
·error LNK2001: unresolved external symbol __ftol2 错误解决
·C库函数手册
·一个简单的C语言编译器
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

与基于udp协议的tracker服务器进行交互

作者: 来源:网络文章 时间:2005-12-16 23:43:08

与基于udp协议的tracker服务器进行交互(2)

// DataStream.h: interface for the CDataStream class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_DATASTREAM_H__D90A2534_EA73_4BEA_8B7E_87E59A3D1D26__INCLUDED_)#define AFX_DATASTREAM_H__D90A2534_EA73_4BEA_8B7E_87E59A3D1D26__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include <stdio.h> //数据流操作函数class CDataStream{public :CDataStream(char * szBuf,int isize){m_isize = isize;buffer = szBuf;current = buffer;}~CDataStream(){} void clear(){current = buffer;current[0]=0;}//此函数不动态增加内存,一次打印的数据长度不应该超过缓冲区的三分之一,否则可能导致失败bool printf(const char * format,...){if(current){if(current - buffer > (m_isize*2)/3)return false;va_list argPtr ;va_start( argPtr, format ) ;int count = vsprintf( current, format, argPtr ) ;va_end( argPtr );current += count ;return true;}return false;}//此函数拷贝字符串bool strcpy(const char * szStr){if(current&&szStr){int ilen = lstrlen(szStr);if((m_isize-(current - buffer)) < (ilen +2))return false;memcpy(current,szStr,ilen+1);current += ilen;return true;}return false;}char * getcurrentpos(){return current;}void move(int ilen)//当前指针向后移动ilen{current += ilen;}void reset(){current = buffer;}BYTE readbyte(){current ++;return *(current-1);}void writebyte(BYTE btValue){*current = btValue;current ++;}WORD readword(){current +=2;return *((WORD*)(current-2));}void writeword(WORD wValue){*((WORD*)current) = wValue;current +=2;}DWORD readdword(){current +=4;return *((DWORD*)(current-4));}void writedword(DWORD dwValue){*((DWORD*)current) = dwValue;current +=4;}__int64 readint64(){current +=8;return *((__int64*)(current-8));}void writeint64(__int64 iValue){*((__int64*)current) = iValue;current +=8;}BYTE * readdata(DWORD dwLen){current +=dwLen;return (BYTE*)(current-dwLen);}void writedata(BYTE * pData,DWORD dwLen){memcpy(current,pData,dwLen);current +=dwLen;}char * readstring(){char * szRes = current;int ilen = lstrlen(current);current +=(ilen+1);return szRes;}int size(){return (int)(current-buffer);}const char * getbuffer(){return buffer;}private :char* buffer; char* current;int m_isize;};class CNetworkByteOrder{public:static unsigned short int convert(unsigned short int iValue){unsigned short int iData;((BYTE*)&iData)[0] = ((BYTE*)&iValue)[1];((BYTE*)&iData)[1] = ((BYTE*)&iValue)[0];return iData;}static int convert(int iValue){int iData;((BYTE*)&iData)[0] = ((BYTE*)&iValue)[3];((BYTE*)&iData)[1] = ((BYTE*)&iValue)[2];((BYTE*)&iData)[2] = ((BYTE*)&iValue)[1];((BYTE*)&iData)[3] = ((BYTE*)&iValue)[0];return iData;}static __int64 convert(__int64 iValue){__int64 iData;((BYTE*)&iData)[0] = ((BYTE*)&iValue)[7];((BYTE*)&iData)[1] = ((BYTE*)&iValue)[6];((BYTE*)&iData)[2] = ((BYTE*)&iValue)[5];((BYTE*)&iData)[3] = ((BYTE*)&iValue)[4];((BYTE*)&iData)[4] = ((BYTE*)&iValue)[3];((BYTE*)&iData)[5] = ((BYTE*)&iValue)[2];((BYTE*)&iData)[6] = ((BYTE*)&iValue)[1];((BYTE*)&iData)[7] = ((BYTE*)&iValue)[0];return iData;}};#endif // !defined(AFX_DATASTREAM_H__D90A2534_EA73_4BEA_8B7E_87E59A3D1D26__INCLUDED_)在逸搜(EaseSo)论坛可以下载到支持udp tracker的测试程序BTTrackerTest.
共3页 9 7 [1] [2] [38 :>

与基于udp协议的tracker服务器进行交互 相关文章:
与基于udp协议的tracker服务器进行交互 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com