资源简介
使用滑动窗口机制实现可靠性传输,适合于学网络的朋友们,算法经典,根据网上别人的代码修改

代码片段和文件信息
#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
相关资源
- 使用选择性重传协议实现UDP可靠通信
- 网络(UDP)转串口程序
- 用Socket写的简易FTP服务器和客户端
- socket小工具(可方便建立TCP UDP的soc
- UDP组播的发送和接收程序
- 采用WINSOCK2 编写的TCP/UDP通信程序
- TCP_UDP对结构体加密数据传输
- 欧姆龙以太网通讯TCP/UDP及欧姆龙PLC程
- UDP协议进行P2P打洞
- 计算机网络socket编程实验
- UDP P2P打洞服务器
- 一个老外写的RUDP的源代码
- udp丢包率统计
- Socket-UDP整合消息接收,发送
- 基于qt的udp实时录音
- 真正的Delphi点对点UDP通讯
- TCPUDPDbg一个好用的tcp/udp工具
- 值得看的Delphi点对点UDP通讯.rar
- tcp udp debug
- QT开发的串口udptcp通信上位机软件
- go语言实现udp server和MongoDB数据写入
- lwip+udp项目
- UDPSender.rar
- 智能家居UDP通信
- 滑动窗口协议模拟.rar
- QT下写的界面程序,可以实现串口和
- sokit TCP/UDP 数据包收发测试(调试)工
- Labwindow_cvi TCP UDP通信例程
- udp滑动窗口流量控制完美实现
- rtsp视频组帧(tcp和udp)
评论
共有 条评论