学习Linux网络编程
来源:互联网 发布:网站流量提升软件 编辑:程序博客网 时间:2024/03/28 17:03
//xsocket.h
#ifndef _X_SOCKET_H_
#define _X_SOCKET_H_
#include <xcommon.h>
#define _X_SOCKET_H_
#include <xcommon.h>
#if CONFIG_VC || CONFIG_BCB
#include <WINSOCK2.H>
#include <io.h>
#elif CONFIG_GCC
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#endif
#include <WINSOCK2.H>
#include <io.h>
#elif CONFIG_GCC
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/wait.h>
#include <arpa/inet.h>
#endif
using namespace zdh;
class XSocket
{
public:
XSocket(int SocketType);
virtual ~XSocket();
int GetSockFD() const { return m_SockFD; }
int GetSocketType() const { return m_SocketType; }
XWord GetSocketRemotePort() const { return m_RemotePort; }
XWord GetSocketLocalPort() const { return m_LocalPort; }
const XString & GetSocketLocalAddress() const { return m_LocalAddress; }
const XString & GetSocketRemoteAddress() const { return m_RemoteAddress; }
void SetLocalAddress(const XString & aLocalAddress, XWord aLocalPort);
void SetRemoteAddress(const XString & aRemoteAddress, XWord aRemotePort);
void Open();
void Close();
XInt SendData(const void * aData,XInt iDataLength);
static void WSAInitializer();
static void WSAClose();
private:
int m_SockFD;
int m_SocketType;
XWord m_RemotePort;
XWord m_LocalPort;
XString m_RemoteAddress;
XString m_LocalAddress;
sockaddr_in m_RemoteAddr;
#if CONFIG_VC || CONFIG_BCB
static WSADATA m_wsadata;
#endif
};
#endif
//xsocket.cpp
//xsocket.cpp
#include "xsocket.h"
#include <assert.h>
#include <assert.h>
using namespace zdh;
XSocket::XSocket(int SocketType)
:m_SocketType(SocketType),
m_SockFD(-1)
{
}
XSocket::~XSocket()
{
Close();
}
XSocket::XSocket(int SocketType)
:m_SocketType(SocketType),
m_SockFD(-1)
{
}
XSocket::~XSocket()
{
Close();
}
void XSocket::SetLocalAddress(const XString & aLocalAddress, XWord aLocalPort)
{
m_LocalAddress = aLocalAddress;
m_LocalPort = aLocalPort;
}
void XSocket::SetRemoteAddress(const XString & aRemoteAddress, XWord aRemotePort)
{
m_RemoteAddress = aRemoteAddress;
m_RemotePort = aRemotePort;
m_RemoteAddr.sin_addr.s_addr = inet_addr(m_RemoteAddress.c_str());
m_RemoteAddr.sin_port = htons(m_RemotePort);
m_RemoteAddr.sin_family = AF_INET;
for(int i=0;i<8;i++) m_RemoteAddr.sin_zero[i] = 0;
}
void XSocket::Open()
{
m_SockFD = socket(AF_INET,m_SocketType,0);
}
void XSocket::Close()
{
if( m_SockFD != -1 )
{
close(m_SockFD);
m_SockFD = -1;
}
}
{
m_LocalAddress = aLocalAddress;
m_LocalPort = aLocalPort;
}
void XSocket::SetRemoteAddress(const XString & aRemoteAddress, XWord aRemotePort)
{
m_RemoteAddress = aRemoteAddress;
m_RemotePort = aRemotePort;
m_RemoteAddr.sin_addr.s_addr = inet_addr(m_RemoteAddress.c_str());
m_RemoteAddr.sin_port = htons(m_RemotePort);
m_RemoteAddr.sin_family = AF_INET;
for(int i=0;i<8;i++) m_RemoteAddr.sin_zero[i] = 0;
}
void XSocket::Open()
{
m_SockFD = socket(AF_INET,m_SocketType,0);
}
void XSocket::Close()
{
if( m_SockFD != -1 )
{
close(m_SockFD);
m_SockFD = -1;
}
}
XInt XSocket::SendData(const void * aData,XInt iDataLength)
{
XInt iRet = sendto(m_SockFD,(const char *)aData,iDataLength,0,(struct sockaddr *)&m_RemoteAddr,sizeof(struct sockaddr));
return iRet;
}
{
XInt iRet = sendto(m_SockFD,(const char *)aData,iDataLength,0,(struct sockaddr *)&m_RemoteAddr,sizeof(struct sockaddr));
return iRet;
}
void XSocket::WSAInitializer()
{
#if CONFIG_BCB || CONFIG_VC
WSAStartup( 0x101, &m_wsadata );
#endif
}
void XSocket::WSAClose()
{
#if CONFIG_BCB || CONFIG_VC
WSACleanup();
#endif
}
//定义类静态变量
#if CONFIG_BCB || CONFIG_VC
WSADATA XSocket::m_wsadata;
#endif
{
#if CONFIG_BCB || CONFIG_VC
WSAStartup( 0x101, &m_wsadata );
#endif
}
void XSocket::WSAClose()
{
#if CONFIG_BCB || CONFIG_VC
WSACleanup();
#endif
}
//定义类静态变量
#if CONFIG_BCB || CONFIG_VC
WSADATA XSocket::m_wsadata;
#endif
//上述代码已在Linux下与VC下编译并运行过!
- 学习Linux网络编程
- 学习Linux网络编程
- 学习Linux网络编程
- 学习linux网络编程
- linux网络编程学习
- Linux 网络编程学习
- linux网络编程学习
- 学习Linux网络编程
- linux网络编程学习
- 学习Linux网络编程教材
- Linux网络编程学习总结
- 学习Linux网络编程(1)
- 学习Linux网络编程(1)
- Linux网络编程-学习笔记
- linux网络编程学习1
- Linux网络编程学习笔记
- linux c 网络编程学习
- Linux网络编程一站式学习
- Hibernate学习笔记(二)--检索策略
- Using XML And XSLT In Delphi
- PSP 编程导学(三)
- 2005-2006年手机嵌入式内存现状和趋势研究报告
- 外企面试官最爱提的10个问题(附答案)
- 学习Linux网络编程
- 什么是威客?
- 各C++编译器预定义配置
- BEA IMS高校创意应用与开发大赛
- Windows Live最值得期待的功能 FolderShare
- 第一篇译作:Working With Unicode in C++(在c++中使用Unicode)
- 本人的blog已经转到http://cnwangyx.bokee.com
- 今天我在CSDN的BLOG开通了
- 3张PSP小漫画