Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2dx3.x利用sokcet创建客户端和服务端(一)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Socke基类:

包括Socket的初始化,主要是windows上,在Android上就不需要了

如果平台为windows,则需要初始化

  1. SocketBase::SocketBase()
  2. {
  3. _bInitsuccess=false;
  4. #if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
  5. WORDwVersionrequested;
  6. wVersionrequested=MAKEWORD(2,0);
  7. WSADATAwsaData;
  8. intnRet=WSAStartup(wVersionrequested,&wsaData);
  9. if(nRet!=0)
  10. fprintf(stderr,"InitilizeError!\n");
  11. return;
  12. }
  13. _bInitsuccess=true;
  14. #endif
  15. }


当然析构时也要释放资源

    SocketBase::~SocketBase()
  1. #if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
  2. if(_bInitsuccess)
  3. {
  4. WSACleanup();
  5. #endif
  6. 因为windows的socket()返回的socket句柄为SOCKET(UINT_PTR)

    与android的socket()返回的socket句柄int,类型不一样,所以都定义为HSocket

    对于服务端和客户端都有关闭连接,所以基类就实现共同的。

    voidSocketBase::closeConnect(HSocketsocket)
  1. #if(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
  2. close(socket);
  3. #elif(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
  4. closesocket(socket);
  5. }

当执行socket()出错时,windows返回SOCKET_ERROR,android返回<0,

所以实现error()

    boolSocketBase::error(HSocketsocket)
  1. returnsocket==SOCKET_ERROR;
  2. #elif(CC_TARGET_PLATFORM==CC_PLATFORM_ANDROID)
  3. returnsocket<0;
  4. SocketBase.h

      #ifndef__SOCKET_BASE_H__
    1. #define__SOCKET_BASE_H__
    2. #include"cocos2d.h"
    3. #include<list>
    4. #include<thread>
    5. USING_NS_Cc;
    6. //对于windows平台
    7. #include<WinSock2.h>
    8. #pragmacomment(lib,"WS2_32.lib")
    9. #defineHSocketSOCKET
    10. //对于android平台
    11. #include<arpa/inet.h>//forinet_**
    12. #include<netdb.h>//forgethost**
    13. #include<neTinet/in.h>//forsockaddr_in
    14. #include<sys/types.h>//forsocket
    15. #include<sys/socket.h>//forsocket
    16. #include<unistd.h>
    17. #include<stdio.h>//forprintf
    18. #include<stdlib.h>//forexit
    19. #include<String.h>//forbzero
    20. #defineHSockeTint
    21. classSocketBase:publicRef
    22. public:
    23. SocketBase();
    24. ~SocketBase();
    25. protected:
    26. voidcloseConnect(HSocketsocket);
    27. boolerror(HSocketsocket);
    28. std::mutex_mutex;
    29. private:
    30. bool_bInitsuccess;
    31. };
    32. #endif

    大佬总结

    以上是大佬教程为你收集整理的cocos2dx3.x利用sokcet创建客户端和服务端(一)全部内容,希望文章能够帮你解决cocos2dx3.x利用sokcet创建客户端和服务端(一)所遇到的程序开发问题。

    如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。