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

📄 mywinsock.cpp

📁 计算机网络CRC码测试
💻 CPP
字号:
// myWinsock.cpp: implementation of the CmyWinsock class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CRC.h"
#include "myWinsock.h"

#include <stdio.h>

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//不带参数
CmyWinsock::CmyWinsock()
{

}

//带参数的构造函数


CmyWinsock::~CmyWinsock()
{
	
}


CString CmyWinsock::InitWinSock(int family,int port,CString address)
{
    //m_IP.S_un.s_addr = inet_addr("132.241.5.10");
	//用与服务器程序
	//m_IP.s_addr = INADDR_ANY; 
	char hostname[256]={0};
    gethostname(hostname,sizeof(hostname));//这一代码是为
	printf(hostname);
	HOSTENT*hos=gethostbyname(hostname);                        //了实现自动获取安
    CString CS=inet_ntoa(*(struct in_addr*)hos->h_addr_list[0]);// 装程序的主机代码
 
	   m_sin_family=family;
	m_sin_port=port;
    //m_IP.S_un.s_addr = inet_addr("132.241.5.10");
	//用与服务器程序
	//m_IP.s_addr = INADDR_ANY; 
     
	m_LocalSockaddr.sin_family=m_sin_family;
	m_LocalSockaddr.sin_port=htons(m_sin_port);
	//bzero(&(m_LocalSockaddr.sin_zero), 8);
	if(address=="")
    m_LocalSockaddr.sin_addr.S_un.S_addr=INADDR_ANY;
	else
	m_LocalSockaddr.sin_addr.S_un.S_addr=inet_addr(address);
	m_Socket=INVALID_SOCKET;
	m_client=INVALID_SOCKET;

return "";
}




SOCKET CmyWinsock::CreateSocket(int af, int type, int protocol)
{
	m_Socket=socket (af,type,protocol);
	if(m_Socket==INVALID_SOCKET)
		return SOCKET_ERROR;
	else
    return m_Socket;
}



int CmyWinsock::mylisten(int backlog)
{
   if(m_Socket==INVALID_SOCKET)
		return SOCKET_ERROR;
   if(listen (m_Socket,backlog)==SOCKET_ERROR)
	   return SOCKET_ERROR; 
   return 1;

}




int CmyWinsock::mybind(/*const sockaddr *name, */int namelen)
{
	if(m_Socket==INVALID_SOCKET)
		return SOCKET_ERROR;
   m_Backlog=bind (m_Socket,(sockaddr *)(&m_LocalSockaddr),namelen);
   if(m_Backlog==SOCKET_ERROR)
   return SOCKET_ERROR;
   return 1;
}




int CmyWinsock::mysend(SOCKET &s,const char *buf, int len, int flags)
{
 if(s!=INVALID_SOCKET)
	 return send (s,buf,len,flags);
else return send (m_client,buf,len,flags);
}




SOCKET CmyWinsock::myaccept(SOCKET &s,sockaddr *addr, int *addrlen)
{
	/*if(s!=INVALID_SOCKET)
		m_client=accept(s,addr,addrlen);
	else*/
	    m_client=accept (s,addr,addrlen);
	if(m_client==INVALID_SOCKET)
		return SOCKET_ERROR;
    return m_client;
}



int CmyWinsock::myclosesocket(SOCKET &s)
{
if(closesocket(s)!=0)
return SOCKET_ERROR;
return 1;
}



/*int CmyWinsock::myWSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent)
{
return SOCKET_ERROR;
}*/

int CmyWinsock::myWSAGetLastError()
{
return WSAGetLastError();
}



int CmyWinsock::myrecv(SOCKET &s,char *buf, int len, int flags)
{
if(s!=INVALID_SOCKET)
return recv (s,buf,len,flags);
else
return recv (m_client,buf,len,flags);
}

WSAEVENT CmyWinsock::myWSACreateEvent()
{
 return WSACreateEvent();
}

int CmyWinsock::myWSAEventSelect(SOCKET &s,WSAEVENT hEventObject, long lNetworkEvents)
{
 return WSAEventSelect(s,hEventObject,lNetworkEvents);
}

⌨️ 快捷键说明

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