自己写的一个同步SOCKET通信类 相当实用
2011-08-11 17:51
330 查看
/*------------------------------------ Author: Ted--Nefarian Zhu Date: 2011/08/11 11:30 Version: V1.03 All rights reserved ! QQ: nefarian_zhu@qq.com ------------------------------------*/ #ifndef CSOCKET_H #define CSOCKET_H #include <iostream> #include <windows.h> class CSocket { private: /*---Member Variables---*/ SOCKET m_socket; struct sockaddr_in m_addr; public: /*---Member Fuctions---*/ CSocket(); ~CSocket(); static BOOL InitLib(); static BOOL UnInitLib(); BOOL InitSock(); BOOL InitSock(const char* constIP,int EndPort); BOOL Bind(); BOOL Listen(); BOOL Accept(CSocket &tsocket); BOOL Connect(); int Send(const char* buff,int buffSize); int Recv(char* buff,int buffSize); BOOL Close(); }; CSocket::CSocket() { memset(&m_addr, 0, sizeof(m_addr)); m_socket = INVALID_SOCKET; } CSocket::~CSocket() { this->Close(); } BOOL CSocket::InitLib() { WSADATA ws; if (WSAStartup(MAKEWORD(2,2),&ws) != 0) { return FALSE; } else { return TRUE; } } BOOL CSocket::UnInitLib() { WSACleanup(); } BOOL CSocket::InitSock() { m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); char szHostName[128] = ""; gethostname(szHostName, 128); hostent* pHost = gethostbyname(szHostName); m_addr.sin_addr.s_addr = (*(IN_ADDR*)pHost->h_addr_list[0]).s_addr; m_addr.sin_port = htons(8608); m_addr.sin_family = AF_INET; return TRUE; } BOOL CSocket::InitSock(const char* constIP,int EndPort) { m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); m_addr.sin_addr.s_addr = inet_addr(constIP); m_addr.sin_port = htons(EndPort); m_addr.sin_family = AF_INET; return TRUE; } BOOL CSocket::Bind() { int result = bind(m_socket, (struct sockaddr*)&m_addr, sizeof(m_addr)); if (result == 0) { return TRUE; } else { return FALSE; } } BOOL CSocket::Listen() { int result = listen(m_socket, 10); if (result == 0) { return TRUE; } else { return FALSE; } } BOOL CSocket::Accept(CSocket &tsocket) { int len = sizeof(m_addr); tsocket.m_socket = accept(m_socket,(struct sockaddr*)&m_addr,&len); if (tsocket.m_socket == INVALID_SOCKET) { return FALSE; } else { return TRUE; } } BOOL CSocket::Connect() { int result = connect(m_socket,(sockaddr*)&m_addr,sizeof(m_addr)); if (result == 0) { return TRUE; } else { return FALSE; } } int CSocket::Send(const char* buff,int buffSize) { int bytes = send(m_socket,buff,buffSize,0); return bytes; } int CSocket::Recv(char* buff,int buffSize) { int bytes = recv(m_socket,buff,buffSize,0); return bytes; } BOOL CSocket::Close() { if (shutdown(m_socket, 2)) return FALSE; if (closesocket(m_socket)) return FALSE; return TRUE; } #endif /*----CSOCKET_H----*/
相关文章推荐
- 自己写的一个注册表操作类----相当实用
- 一个Android Socket的例子---自己加了点东西
- 如何删除一个CSDN上自己上传的资源(亲测,实用有效)
- C#中自己动手创建一个Web Server(非Socket实现)
- 自己封装了一个socket下载文件的类
- 实用Eclipse快捷键(每一个都是自己常用的,用不着的一个都不写)
- 为什么要自己给SOCKET绑定一个值
- 自己写的一个VB密码本,功能简单实用,献丑了。
- 用PYTHON快速开发一个实用的SOCKET服务器【转】
- 自己搭建了一个简单实用的Web版记事本
- 用python快速开发一个实用的socket服务器
- 用python快速开发一个实用的socket服务器
- 一个简单的同步socket 连接
- 自己动手创建一个Web Server(非Socket实现)
- 发一个自己用JS写的实用看图工具
- 原创,自己做的一个简单实用的提示小插件,兼容性很好,基本上都兼容!
- 自己编写的一个基于java的socket网络聊天程序
- 用PYTHON快速开发一个实用的SOCKET服务器
- 发一个自己用JS写的实用看图工具
- C#中自己动手创建一个Web Server(非Socket实现)