资源简介
使用滑动窗口机制实现可靠性传输,适合于学网络的朋友们,算法经典,根据网上别人的代码修改
代码片段和文件信息
#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 << “网络初化失败“ << endl;
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 << “socket error“ << endl;
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 << “bind error“ << endl;
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
相关资源
- 以太网ENC28J60 tcp udp
- CSocket类的使用,实现TCP/UDP在局域网内
- linux C TCP/UDP客户端服务端的相互实时
- 基于UDP的多播文件传输
- Qt下tcp和udp的编程
- webcam_v4l2_x264
- 基于UDP的局域网聊天系统.doc
- 报文测试器v2.0(tcp/udp报文数据测试)
- TCP+UDP通信实验
- QT5 UDP方式发送数据
- UDP打洞P2P技术源码
- FPGA实现以太网UDP通信
- 基于UDP协议的unity客户端,内涵服务端
- 自己弄的一个Delphi UDP server 和 client的
- 多线程自动化syn&udp flood攻击集成工具
- 基于UDP的局域网聊天器
- UDP通信QT
- UDP协议中的 UDP Flood 攻击详细讲解
- Windows下VC实现的类似Netstat命令查看端
- Programming Assignment 3: UDP Pinger Lab
- e语言-易语言远程获取TCP UDP链接源码
- 计算机网络课程设计编写UDP客户/服务
- udp_test.zip
- TCP和UDP数据包发送程序
- 滑动窗口协议的仿真实现
- 基于Udp的五子棋对战游戏
- UDP十六进制数据传输
- udp flood 工具
- udp flood exe
- qt UDP聊天
评论
共有 条评论