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

📄 cmmdef.h

📁 使用UDP模拟可靠传输协议rdt2.0。使用两个程序
💻 H
字号:
#ifndef __LTM_CMMDEF__
#define __LTM_CMMDEF__
#include <vector>

#define PORT_SRV 1234
#define PORT_CLI 4321
#define SRV_RCV_MSG  WM_USER+11
#define CLI_RCV_MSG  WM_USER+21
#define TIMER_SRV_SEND 1
#define TIMER_SRV_ACKWAIT 2
#define SRV_SEND_TM  10
#define SRV_ACKWAIT_TM 5	//统计10次

#define PD_LEN 8
typedef struct SNDPKT
{
	int id; 
	BYTE data[PD_LEN];
}SNDPKT;
#define REQ_ACK 1
typedef struct REQPKT 
{
	int id; char flag;
}REQPKT;

void GetLocalIP(BYTE&b1,BYTE&b2,BYTE&b3,BYTE&b4)
{
	char hostname[128];

	gethostname(hostname,128);
	struct hostent* pHost=gethostbyname(hostname);
	if(pHost==NULL||pHost->h_addr_list[0]==NULL) AfxMessageBox("ERROR on get local ip!!");
	b1=pHost->h_addr_list[0][0] & 0x00ff;
	b2=pHost->h_addr_list[0][1] & 0x00ff;
	b3=pHost->h_addr_list[0][2] & 0x00ff;
	b4=pHost->h_addr_list[0][3] & 0x00ff;
}

std::vector<SNDPKT> makepkts(const char*pData,int len)
{
	//ASSERT(len>0)
	int n=len/PD_LEN+1;
	int offset,ct=0;
	std::vector<SNDPKT> vret;  
	vret.clear();
	if(len<=0) return vret;
	SNDPKT spkt;
	spkt.id=0;
	memcpy(spkt.data,&n,sizeof(n));
	GetLocalIP((spkt.data[4]),(spkt.data[5]),(spkt.data[6]),(spkt.data[7]));

	vret.push_back(spkt);

	for(offset=0,ct=1;offset<=len;offset+=PD_LEN,ct++)
	{
		spkt.id=ct;
		memcpy(spkt.data,pData+offset,PD_LEN);
		vret.push_back(spkt);
	}
	return vret;
}



#endif

⌨️ 快捷键说明

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