MirSocket.cpp
上传用户:marco7834
上传日期:2010-02-24
资源大小:82k
文件大小:1k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // MirSocket.cpp: implementation of the CMirSocket class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "MirSocket.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. CMirSocket::CMirSocket()
  10. {
  11. }
  12. CMirSocket::~CMirSocket()
  13. {
  14. }
  15. int CMirSocket::SetNoBlock( SOCKET s )
  16. {
  17. unsigned long mode = 1;
  18. if( ioctlsocket( s, FIONBIO, &mode ) == -1 )
  19. return 0;
  20. return 1;
  21. }
  22. BOOL CMirSocket::NetStartup()
  23. {
  24. WSADATA m_wsaData;
  25. return (WSAStartup(MAKEWORD(2,2), &m_wsaData) != SOCKET_ERROR);
  26. }
  27. BOOL CMirSocket::NetCleanup()
  28. {
  29. return WSACleanup();
  30. }
  31. SOCKET CMirSocket::OpenConnection( char * ip, unsigned short port )
  32. {
  33. LPHOSTENT m_pHost;
  34. SOCKET s;
  35. struct sockaddr_in ServAddr;
  36. m_pHost = gethostbyname(ip);
  37. s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  38. ServAddr.sin_family = AF_INET;
  39. ServAddr.sin_addr.s_addr = *(ULONG *)m_pHost->h_addr_list[0];
  40. ServAddr.sin_port = htons(port);
  41. int erri = connect(s, (struct sockaddr *)&ServAddr, sizeof(ServAddr));
  42. if( erri == -1)
  43. return 0;
  44. return s;
  45. }
  46. void CMirSocket::CloseConnection( SOCKET s )
  47. {
  48. closesocket( s );
  49. }