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

📄 tcpsocket.cpp

📁 用Visual c++.net实现电子商务的实现(内含源代码)
💻 CPP
字号:
#include "StdAfx.h"
#include ".\tcpsocket.h"

TCPSocket::TCPSocket(void)
{
	Init();//初始化
}

TCPSocket::~TCPSocket(void)
{
	this->Close();//关闭套接字
	WSACleanup(); //卸载相关库
}

bool TCPSocket::Init(void)
{
	int Error;
	WORD VersionRequested;
	WSADATA WsaData;
	VersionRequested=MAKEWORD(2,2);//版本号协商
	Error=WSAStartup(VersionRequested,&WsaData); //初始化WinSock2
	if(Error!=0)
	{
		return FALSE;
	}
	else
	{
		if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
		{
			WSACleanup();
			return FALSE;
		}
		
	}
	return TRUE;	
}

int TCPSocket::Create(int port)
{
	sockaddr_in local;
	local.sin_addr.s_addr = INADDR_ANY;
	local.sin_family = AF_INET;
	local.sin_port = htons(port);

	if((m_socket = socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)//创建socket
	{
        return WSAGetLastError();
	}
	if((bind(m_socket,(struct sockaddr*)&local,sizeof(local)))==SOCKET_ERROR)//socket绑定
	{
		return WSAGetLastError();
	}
	return true;
}

int TCPSocket::Send(const char* buf, int len)//发送数据
{
	if(buf==NULL||len==0)
	return -1;

	if((send(m_socket,buf,len,0))==SOCKET_ERROR)
	{
		return WSAGetLastError();
	}
	return 0;

}

int TCPSocket::Recv(char* buf, int len)//数据接收
{
	if(buf==NULL)
	return -1;
	int ret;
	ret = recv(m_socket,buf,len,0);
	if(ret==SOCKET_ERROR)
	{
		return WSAGetLastError();
	}	
	return ret;
}
int TCPSocket::Accept(TCPSocket* cs)//接受新的连接,cs为新创建的Socket
{
	struct   sockaddr_in addr;
	int len = sizeof(addr);
	cs->m_socket = accept(m_socket,(struct sockaddr*)&addr,&len);
	return 0;
}

int TCPSocket::Connect(char* ip, int port)//连接指定IP和端口的目标主机
{
	if(strlen(ip)==0||port==0)
	return -1;
	struct   sockaddr_in addr;
	addr.sin_addr.S_un.S_addr =inet_addr(ip);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(port);

	connect(m_socket,(struct sockaddr*)&addr,sizeof(addr));
	return WSAGetLastError();
}

int TCPSocket::Listen(int num)//监听
{
	if(num==0) return -1;
	return listen(m_socket,num);
}

int TCPSocket::Close(void)//关闭套接字
{
	return closesocket(m_socket);
}

⌨️ 快捷键说明

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