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

📄 mysocket.cpp

📁 pocket pc 2003系统下的数据通讯和文件传输
💻 CPP
字号:
#include "stdafx.h"
#include "MySocket.h"

CMySocket::CMySocket()
{
	m_hSocket = INVALID_SOCKET;
}

CMySocket::~CMySocket()
{
	Close();
}

BOOL CMySocket::Close()
{
	if(m_hSocket == INVALID_SOCKET)
		return FALSE;
	::closesocket(m_hSocket);
	m_hSocket = INVALID_SOCKET;
	return TRUE;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
}

BOOL CMySocket::Create(int nPort, char* ip)
{
	if(m_hSocket != INVALID_SOCKET)
		return FALSE;

	m_hSocket = ::socket(PF_INET, SOCK_DGRAM, 0);
	if (m_hSocket == INVALID_SOCKET)
		return FALSE;

	// Bind to the port
	SOCKADDR_IN	SockAddr;
	memset(&SockAddr,0, sizeof(SockAddr));
	SockAddr.sin_family = AF_INET;
	SockAddr.sin_addr.s_addr = inet_addr(ip);
	SockAddr.sin_port   = ::htons(nPort);
	
	// Bind to the address and port
	int r = ::bind(m_hSocket, (SOCKADDR*)&SockAddr, sizeof(SockAddr));
	if (r == 0)
	{                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
//		::setsockopt(SOL_SOCKET, SO_DONTLINGER, 1);
//		::setsockopt(SOL_SOCKET, SO_KEEPALIVE, 1);
	}
	else
	{
		return FALSE;
	}
		
	return TRUE;
}

int CMySocket::SendTo(char* lBuf, int bufSize, int nPort, char* addr)
{
	if(m_hSocket == INVALID_SOCKET)
		return 0;

	SOCKADDR_IN SockAddr;
	memset(&SockAddr,0, sizeof(SockAddr));
	SockAddr.sin_family = AF_INET;
	SockAddr.sin_addr.s_addr = inet_addr(addr);
	SockAddr.sin_port   = ::htons(nPort);
	
	return ::sendto(m_hSocket, lBuf, bufSize, 0, (sockaddr*)&SockAddr, sizeof(SockAddr));
}

int CMySocket::ReceiveFrom(char* lBuf, int bufSize, char* addr)
{
	if(m_hSocket == INVALID_SOCKET)
		return 0;

	SOCKADDR_IN addr1;
	memset(&addr1, 0, sizeof(addr1));
	int addrlen = sizeof(addr1);
	int ret = ::recvfrom(m_hSocket, lBuf, bufSize, 0, (sockaddr*)&addr1, &addrlen);
	strcpy(addr, inet_ntoa(addr1.sin_addr));
	return ret;
}




⌨️ 快捷键说明

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