类头如下:
class CNet  
{
public:
static BOOL Close(SOCKET &socket);
static BOOL Close(TSOCKET &ts);
static int Receive(TSOCKET &socket , LPVOID lpData, DWORD dwSize , DWORD dwTimeout = INFINITE);
static int Send(TSOCKET &socket, LPVOID lpData, DWORD dwSize, DWORD dwTimeOut = INFINITE);
static BOOL StartUp();
static bool StartListen(TSOCKET &ts , short sListenPort);
CNet();
virtual ~CNet();
static int Connect(TSOCKET &ts , LPSTR lpServerAddr, short sPort);
static int Connect(TSOCKET &ts , LPSTR lpServerAddr, short sPort , STRUCT_PROXY &ProxyInfo);
static BOOL SetSocketOpt(SOCKET &s , int iBuffSize = BUFFERSIZE); static int SendEx(SOCKET &socket, WSABUF **buf, DWORD dwBufCount, DWORD dwTimeOut);
static int ReceiveEx(SOCKET &socket , WSABUF **buf, DWORD dwBufCount , DWORD dwTimeout);
};
代码下载地址:http://mybios.w145.west263.cn/temp/CNetTest.rar
如代码有错误请专家们指正!!

解决方案 »

  1.   

    SetSocketOpt(SOCKET &s , int iBuffSize = BUFFERSIZE);
    这里的函数名和他的作用是一致的吗?
      

  2.   

    全static ?定义为类有什么意义?
      

  3.   

    to  ipgk:
    本来这些函数都可以用作全局函数的,但是我把它写到一个类中,集中管理。而且可以继承。
    这个类没有成员变量,所以没有搞成员函数,所以全部都变成静态的了。
    to  xzqchat:
    退出时候有个标记没有初始化。。所以会死循环,稍微改一下就OK。这个跟核心类CNet没点关系。只是例子程序里的退出时候那个线程处理不太好。
      

  4.   

    to: ipgk
    没有用名字空间来管理哦。。那每次都要导入名字空间了?你的意思是不是说用名字空间的全局函数??
      

  5.   

    不好意思,没明白,和CSocket CAnsycSocket有什么区别,好象人家功能强多了
      

  6.   

    意思是把那些函数都定义为全局函数放在一个名字空间里面,这样既达到了你说的'管理'的目的,也省了每次定义函数都加static,使用时也不必每次都加个类名。不过我奇怪你为什么不写一个真正的面向对象的类,C++的class,就被你用来包装函数,是不是太大材小用了。
      

  7.   

    to ipgk
    谢谢咯。。我的确想写一个真正面向对象的类。。以后会扩充此类的。。这个类是我在做一个文件动态访问的程序的时候临时做的。所以写得比较粗糙。。还望指点!
      

  8.   

    to   nooning:
    相对来说这个类的效率要比CSocket和CAnsycSocket的要高得多。测试一下就知道