91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

使用滑動窗口機制實現可靠性傳輸,適合于學網絡的朋友們,算法經典,根據網上別人的代碼修改

資源截圖

代碼片段和文件信息

#include?“stdafx.h“
#include?“.\hsocket.h“

CHsocket::CHsocket(CHsocket&?hsocket)?:?m_socket(hsocket.m_socket)
{

}

CHsocket::CHsocket(SOCKET?socket)?:?m_socket(socket)
{

}

CHsocket::CHsocket()
{
m_socket?=?INVALID_SOCKET;
}

CHsocket::~CHsocket()
{
}

bool?CHsocket::StartSock()
{
WSADATA?wsaData;
int?ret?=?WSAStartup(MAKEWORD(2?2)?&wsaData);
if(ret?==?SOCKET_ERROR)
{
// cout?< return?false;
}

return?true;
}

bool?CHsocket::hsocket(unsigned?int?port?int?type?const?char*?address)
{
m_socket?=?socket(AF_INET?type?0);
if(m_socket?==?SOCKET_ERROR)
{
// cout?< return?false;
}

if(port?==?0)//?if?nPort?is?zero?only?create?a?socket?not?bind
return?true;

makesendsockaddr(address?port);

int?ret?=?bind(m_socket?(struct?sockaddr*)&m_sendsockaddr?sizeof(m_sendsockaddr));
if(ret?==?SOCKET_ERROR)
{
// cout?< return?false;
}

return?true;
}

int?CHsocket::hconnect(char*?address?unsigned?int?port)
{
struct?sockaddr_in?sockaddr;
memset(&sockaddr?0?sizeof(sockaddr));
sockaddr.sin_addr.s_addr =?inet_addr(address);
sockaddr.sin_family =?AF_INET;
sockaddr.sin_port =?htons(port);
return?connect(m_socket?(struct?sockaddr*)&sockaddr?sizeof(sockaddr));
}

int?CHsocket::hlisten(int?backlog)
{
return?listen(m_socket?backlog);
}

SOCKET?CHsocket::haccept()
{
struct?sockaddr_in?sockaddr;
int addrlen?=?sizeof(sockaddr);

memset(&sockaddr?0?sizeof(sockaddr));

return?accept(m_socket?(struct?sockaddr*)&sockaddr?&addrlen);
}

int?CHsocket::?hsend(const?char*?buf?int?len)
{
return?send(m_socket?buf?len?0);
}

int?CHsocket::hrecv(char*?buf?int?len)
{
return?recv(m_socket?buf?len?0);
}

int?CHsocket::hsendto(const?char*?buf?int?len?const?sockaddr*?to)
{
return?sendto(m_socket?buf?len?0?to?sizeof(m_sockaddr));
}

int?CHsocket::hsendto(const?char*?buf?int?len)
{
return?sendto(m_socket?buf?len?0?(struct?sockaddr*)&m_sendsockaddr?sizeof(m_sendsockaddr));
}

int?CHsocket::hrecvfrom(char*?buf?int?len?sockaddr*?from)
{
int?sockaddrlen?=?sizeof(m_sockaddr);

return?recvfrom(m_socket?buf?len?0?from?&sockaddrlen);
}

int?CHsocket::hrecvfrom(char*?buf?int?len)
{
int?sockaddrlen?=?sizeof(m_sockaddr);

return?recvfrom(m_socket?buf?len?0?(struct?sockaddr*)&m_sockaddr?&sockaddrlen);
}

int?CHsocket::hclosesocket()
{
return?closesocket(m_socket);
}

int?CHsocket::CleanSock()
{
return?WSACleanup();
}

SOCKET?CHsocket::operator?*()
{
return?m_socket;?
}

CHsocket&?CHsocket::operator?=(CHsocket&?hsocket)
{
if(this?==?&hsocket)
return?*this;

m_socket?=?hsocket.m_socket;
memcpy(&m_sockaddr?&hsocket.m_sockaddr?sizeof(m_sockaddr));
memcpy(&m_sendsockaddr?&hsocket.m_sendsockaddr?sizeof(m_sendsockaddr));
m_straddr?=?hsocket.m_straddr;
return?*this;
}

void?CHsocket::make

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2010-01-06?14:14??Hsocket\
?????文件????????5367??2004-12-10?15:13??Hsocket\Hsocket.cpp
?????文件????????1693??2004-12-07?01:51??Hsocket\Hsocket.h
?????目錄???????????0??2010-01-06?14:14??UDPTrsmtFile\
?????文件???????13586??2004-12-14?01:58??UDPTrsmtFile\UDPTrsmtFile.cpp
?????文件????????4059??2004-12-14?01:53??UDPTrsmtFile\UDPTrsmtFile.h

評論

共有 條評論