⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datagramsocket.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////// Filename   : DatagramSocket.cpp// Written By : reiot@ewestsoft.com// Description :////////////////////////////////////////////////////////////////////////// include files#include "DatagramSocket.h"#include "Assert.h"#include "FileAPI.h"////////////////////////////////////////////////////////////////////////// constructor for UDP Client Socket//// UDP 努扼捞攫飘 家南篮 窜瘤 nonamed 家南父 积己秦 滴搁 等促.// 恐衬窍搁, 辑滚肺 send且 锭付促 Datagram狼 林家甫 瘤沥秦滴搁// 登扁 锭巩捞促.////////////////////////////////////////////////////////////////////////DatagramSocket::DatagramSocket () 	throw ( Error ): m_SocketID(INVALID_SOCKET){	__BEGIN_TRY 	__BEGIN_DEBUG	m_SocketID = SocketAPI::socket_ex( AF_INET , SOCK_DGRAM , 0 );	__END_DEBUG	__END_CATCH}////////////////////////////////////////////////////////////////////////// constructor for UDP Server Socket//// UDP 辑滚 家南篮 家南阑 积己窍绊, port 甫 官牢爹矫虐搁 霖厚啊 肯丰等促.////////////////////////////////////////////////////////////////////////DatagramSocket::DatagramSocket ( uint port ) 	throw ( Error ): m_SocketID(INVALID_SOCKET){	__BEGIN_TRY 	m_SocketID = SocketAPI::socket_ex( AF_INET , SOCK_DGRAM , 0 );	// clear memory	memset( &m_SockAddr , 0 , szSOCKADDR_IN );	m_SockAddr.sin_family      = AF_INET;	m_SockAddr.sin_addr.s_addr = htonl(INADDR_ANY);	m_SockAddr.sin_port        = htons(port);	// bind address to socket	SocketAPI::bind_ex( m_SocketID , (SOCKADDR*)&m_SockAddr , szSOCKADDR_IN );	__END_CATCH}//////////////////////////////////////////////////////////////////////// destructor//////////////////////////////////////////////////////////////////////DatagramSocket::~DatagramSocket ()	throw ( Error ){	__BEGIN_TRY		if ( m_SocketID != INVALID_SOCKET )		FileAPI::close_ex( m_SocketID );	__END_CATCH}//////////////////////////////////////////////////////////////////////// send datagram to peer//////////////////////////////////////////////////////////////////////uint DatagramSocket::send ( Datagram * pDatagram )	throw ( ConnectException , Error ){	__BEGIN_TRY 	Assert( pDatagram != NULL );	try {	int nSent = SocketAPI::sendto_ex( m_SocketID , pDatagram->getData() , pDatagram->getLength() , 0 , pDatagram->getAddress() , szSOCKADDR_IN );	return (uint)nSent;	} catch ( ConnectException & t ) {		cout <<"DatagramSocket::send Exception Check!" << endl;		cout << t.toString() << endl;		throw ConnectException("DatagramSocket狼 惑困肺 带柳促");	}	__END_CATCH}////////////////////////////////////////////////////////////////////////// receive datagram from peer//// 父距俊 捞 努贰胶甫 blocking 栏肺 荤侩茄促搁, (溜 select 扁馆栏肺)// 酒付档 nReceived 啊 0 捞窍牢 版快绰 绝栏府扼绊 魄窜等促.////////////////////////////////////////////////////////////////////////Datagram * DatagramSocket::receive ()	throw ( ConnectException , Error ){	__BEGIN_TRY 	Datagram * pDatagram = NULL;	SOCKADDR_IN SockAddr;	uint _szSOCKADDR_IN = szSOCKADDR_IN;	// 郴何 滚欺俊促啊 汗荤秦敌促.	int nReceived = SocketAPI::recvfrom_ex( m_SocketID , m_Buffer , DATAGRAM_SOCKET_BUFFER_LEN , 0 , (SOCKADDR*)&SockAddr , &_szSOCKADDR_IN );	if ( nReceived > 0 ) {		pDatagram = new Datagram();		pDatagram->setData( m_Buffer , nReceived );		pDatagram->setAddress( &SockAddr );	}	return pDatagram;	__END_CATCH}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -