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

📄 def.cpp

📁 局域网内聊天传输文件
💻 CPP
字号:
/*
  取之于斯,用之于斯。
  我自己的学习成长,有一大部分要归功于在互联网上接触到的一些开源的代码和开源项目。作者的精湛技艺,尤其是他们博大的胸怀,让我敬仰不已。
  因此我也将自己写的一些代码及工具,只要是比较完整的,不涉及到工作中保密信息的,整理出来。放到网上,希望能对其他人有用。
  你可以自由的拷贝,分发,使用这些代码,最好是能提到它的出处,我保留除此之外的所有权利。由于是非商业性的软件及代码,在使用过程中造成的所有损失,我不承担任何责任。 :)
  我的邮件:pankkk@hotmail.com
  我的名字:潘凯
  欢迎和我交流技术方面的问题。


  我已经发布的一些代码及工具。这些代码及工具我一般发布在vchelp及vccode的论坛上,这两个地方是我常去的地方,只是近来都是潜水,很少发言。:)

1、一个从codeproject下载文章及源码的工具,可以将上面所有的文章及源码都下载到本机,并保留原来的分类信息,去掉页面上的广告。发布日期2003/1
  这个软件是用MFC做的。现在可能已经不能用了,因为当时不用登录也可以下载源码,现在必须要是会员,而且要登录后才能下载。而且网站的组织结构也变了。有兴趣的朋友可以自己试着改源码。

2、一个上网计时的小软件。发布时期2003/11
  这个软件主要也是自用,当时家里办了ADSL上网,一个月60小时。当时下了一些计时软件,感觉不好用,功能太多,就自己写了一个。界面比较简陋,但也够用了。

3、一个点对点的局域网聊天软件,有QQ的Emotion功能,可以一对多的传文件。发布日期2004/12,发布版本1.13。
  界面部分用WTL做的,聊天用UDP协议,传文件是TCP协议。由于不需要服务器,很多功能实现起来还是很麻烦的。

*/

//PK 2004/10/14
#include <windows.h>
#include <atltime.h>
#include "def.h"
#include "emotion.cpp"

const string g_system_info = "<系统消息>";

//PK 2004/10/07 - 20
const unsigned int g_online_interval = 10;
const unsigned int g_task_life_time = 300;
const mask_type g_mask = 21108;
const string g_version = "1.13";
version_type get_version()
{
	return (version_type)(atof(g_version.c_str()) * 100);
}

string get_err_text(error_no err)
{	//PK 2004/10/29
	string text;
	switch (err) {
		case err_create_socket:
			text = "创建socket套接字时出错";
			break;
		case err_create_connect:
			text = "建立TCP连接时出错";
			break;
		case err_listen:
			text = "开始侦听TCP连接时出错";
			break;
		case err_send_data:
			text = "发送数据时出错";
			break;
		case err_recv_data:
			text = "接收数据时出错";
			break;
		case err_create_file:
			text = "创建文件时出错";
			break;
		case err_write_file:
			text = "写入文件时出错";
			break;
		case err_file_size:
			text = "没有足够的磁盘空间";
			break;
	}
	return text;
}
_my_time::_my_time()
{	//PK 2004/10/08 - 10/14
	SYSTEMTIME st;
	GetLocalTime(&st);
	_convert_systemtime_to_mine(st, _time);
}
string _my_time::get_time()
{	//PK 2004/10/08 - 10/15
	SYSTEMTIME st;
	_convert_mine_to_systemtime(st, _time);
	char buf[21];
	buf[20] = '\0';
	char * pos = buf;
	itoa(st.wYear, pos, 10); pos += strlen(pos); *pos++ = '-';
	if (st.wMonth < 10) *pos++ = '0';
	itoa(st.wMonth, pos, 10); pos += strlen(pos); *pos++ = '-';
	if (st.wDay < 10) *pos++ = '0';
	itoa(st.wDay, pos, 10); pos += strlen(pos); *pos++ = ' ';
	if (st.wHour < 10) *pos++ = '0';
	itoa(st.wHour, pos, 10); pos += strlen(pos); *pos++ = ':';
	if (st.wMinute < 10) *pos++ = '0';
	itoa(st.wMinute, pos, 10); pos += strlen(pos); *pos++ = ':';
	if (st.wSecond < 10) *pos++ = '0';
	itoa(st.wSecond, pos, 10); pos += strlen(pos);
	return buf;
}
void _my_time::_convert_systemtime_to_mine(const SYSTEMTIME & st, unsigned char * my_time)
{	//PK 2004/10/14
	my_time[0] = ((unsigned char)(st.wYear - 2000) << 2) & 0xFC;
	my_time[0] |= ((unsigned char)st.wMonth >> 2) & 0x03;
	my_time[1] = ((unsigned char)st.wMonth << 6) & 0xC0;
	my_time[1] |= ((unsigned char)st.wDay << 1) & 0x3E;
	my_time[1] |= ((unsigned char)st.wHour >> 4) & 0x01;
	my_time[2] = ((unsigned char)st.wHour << 4) & 0xF0;
	my_time[2] |= ((unsigned char)st.wMinute >>2) & 0x0F;
	my_time[3] = ((unsigned char)st.wMinute << 6) & 0xC0;
	my_time[3] |= ((unsigned char)st.wSecond) & 0x3F;
}
void _my_time::_convert_mine_to_systemtime(SYSTEMTIME & st, const unsigned char * my_time)
{	//PK 2004/10/14
	st.wDayOfWeek = 0;
	st.wYear = 2000 + ((my_time[0] >> 2) & 0x3F);
	st.wMonth = ((my_time[0] << 2) & 0x0C) | ((my_time[1] >> 6) & 0x03);
	st.wDay = (my_time[1] >> 1) & 0x1F;
	st.wHour = ((my_time[1] << 4) & 0x10) | ((my_time[2] >> 4) & 0x0F);
	st.wMinute = ((my_time[2] << 2) & 0x3C) | ((my_time[3] >> 6) & 0x03);
	st.wSecond = my_time[3] & 0x3F;
}
unsigned int _my_time::operator - (const _my_time & rv)
{	//PK 2004/10/14 - 10/15
	SYSTEMTIME lst, rst;
	_convert_mine_to_systemtime(lst, _time);
	_convert_mine_to_systemtime(rst, rv._time);
	CTime lt(lst);
	CTime rt(rst);
	return (unsigned int)((lt - rt).GetTotalSeconds());
}
_task::_task()
{	//PK 2004/10/15
	srand((unsigned)time(NULL));
	task_id = (long)rand();
	s = 0;
	state = prepare;
}

⌨️ 快捷键说明

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