📄 mywinsock.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 + -