• 大小: 813KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: C/C++
  • 标签: 多线程  C/S  

资源简介

//**************************************************** // File: HB_Server.cpp // Language: Visual C++ // IDE: VS2010 // Project: Win32 Console+预编译头 // Author: Dearggae // Date: 2012.10.31 // Function: 支持不同类型信息的接收回射服务器 //**************************************************** //**************************************************** // File: HB_Client.cpp // Language: Visual C++ // IDE: VS2010 // Project: Win32 Console+预编译头 // Author: Dearggae // Date: 2012.10.31 // Function: 支持不同类型信息的发送回射客户端 //****************************************************

资源截图

代码片段和文件信息

//****************************************************
// File: HB_Client.cpp 
// Language: Visual C++
// IDE: VS2010
// Project: Win32 Console+预编译头
// Author: Dearggae
// Date: 2012.10.31
// Function: 支持不同类型信息的发送回射客户端
//****************************************************


#include “stdafx.h“
#include “typedef.h“
#include 
#include “windows.h“
#include 

#include 
#pragma comment(lib“WS2_32.lib“)



DWORD WINAPI SendThread(LPVOID); //发送线程函数
DWORD WINAPI RecvThread(LPVOID); //接收线程函数
DWORD WINAPI HBThread(LPVOID); //心跳线程函数
void CheckError(intchar*); //查错处理
STRING GetSystemTime(); //获取系统时间
void Close(); //释放服务器
SOCKET sHost;
int Ret;

int _tmain(int argc _TCHAR* argv[])
{
WSADATA wsd;
SOCKADDR_IN Server;
DWORD SendThreadId;
DWORD RecvThreadId;
DWORD HBThreadId;

int iaddrSize = sizeof(SOCKADDR_IN);

//初始化WinSocket环境
if(WSAStartup(MAKEWORD(22)&wsd) != 0)
{
printf(“WSAStartup failed !\n“);
system(“pause“);
exit(0);
}
//创建监听Socket
sHost = socket(AF_INETSOCK_STREAMIPPROTO_TCP);
if(INVALID_SOCKET == sHost)
{
printf(“socket failed !\n“);
system(“pause“);
exit(0);
}

//绑定
Server.sin_family = AF_INET;
Server.sin_port = htons(PORT);
Server.sin_addr.S_un.S_addr = inet_addr(SERVER_IP);

//绑定Sockets Server到本地地址
Ret = connect(sHost(LPSOCKADDR)&Serversizeof(Server));
CheckError(Ret“HB_Client(): Connect Failed“);
printf(“Connect Success ! \n“);

//================================================
CreateThread(NULL 0 SendThread NULL 0 &SendThreadId);

CreateThread(NULL 0 RecvThread NULL 0 &RecvThreadId);

CreateThread(NULL 0 HBThread NULL 0 &HBThreadId);

Sleep(1000000);

return 0;
}


DWORD WINAPI SendThread(LPVOID lpParam)
{
char msg[MSG_SIZE];
char buf[MSG_SIZE+HEAD_SIZE];

while(true)
{
Sleep(SEND_TIME);
ZeroMemory(msgMSG_SIZE);
ZeroMemory(bufMSG_SIZE);
printf(“Please input a string to send (send exit ~ ): “);
std::string str;
getline(std::cinstr);
strcpy_s(msgstr.c_str());
sprintf_s(buf“%04d%s“MSG_COMmsg);
Ret = send(sHostbufstrlen(buf)0);
CheckError(Ret“SendThread: Send Failed“);
while (Ret<=0) //实现超时重发功能
{
Sleep(SEND_TIMEOUT);
Ret = send(sHostbufstrlen(buf)0);
}
}
return 0;
}


DWORD WINAPI RecvThread(LPVOID lpParam)
{
char buf[MSG_SIZE+HEAD_SIZE];
char msg[MSG_SIZE];
char head[HEAD_SIZE+1];
int MsgType;
int len;

while(TRUE)
{
ZeroMemory(headHEAD_SIZE+1);
ZeroMemory(msgMSG_SIZE);
ZeroMemory(bufMSG_SIZE+HEAD_SIZE);
Ret = recv(sHostbufMSG_SIZE+HEAD_SIZE0);
CheckError(Ret“RecvThread: Recv Failed“);
len = strlen(buf);
strncpy_s(headbufHEAD_SIZE);
sscanf_s(head“%d\n“&MsgType);
strncpy_s(msgbuf+HEAD_SIZElen-HEAD_SIZE);

switch (MsgType)
{
case MSG_COM :
printf(“%s Recv From Server : %s\n“GetSystemTime().strmsg)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1602  2012-10-31 11:08  HB_Client\Debug\cl.command.1.tlog

     文件      23914  2012-10-31 11:08  HB_Client\Debug\CL.read.1.tlog

     文件       1032  2012-10-31 11:08  HB_Client\Debug\CL.write.1.tlog

     文件        406  2012-10-30 21:23  HB_Client\Debug\HB_Client.exe.embed.manifest

     文件        472  2012-10-30 21:23  HB_Client\Debug\HB_Client.exe.embed.manifest.res

     文件        381  2012-10-31 11:08  HB_Client\Debug\HB_Client.exe.intermediate.manifest

     文件         73  2012-10-31 11:08  HB_Client\Debug\HB_Client.lastbuildstate

     文件       2358  2012-10-31 11:08  HB_Client\Debug\HB_Client.log

     文件     134450  2012-10-31 11:08  HB_Client\Debug\HB_Client.obj

     文件    1179648  2012-10-30 21:14  HB_Client\Debug\HB_Client.pch

     文件        208  2012-10-30 21:14  HB_Client\Debug\HB_Client_manifest.rc

     文件          2  2012-10-31 11:08  HB_Client\Debug\link-cvtres.read.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link-cvtres.write.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.14372-cvtres.read.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.14372-cvtres.write.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.14372.read.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.14372.write.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.23952-cvtres.read.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.23952-cvtres.write.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.23952.read.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.23952.write.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.9420-cvtres.read.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.9420-cvtres.write.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.9420.read.1.tlog

     文件          2  2012-10-31 11:08  HB_Client\Debug\link.9420.write.1.tlog

     文件       1838  2012-10-31 11:08  HB_Client\Debug\link.command.1.tlog

     文件       3744  2012-10-31 11:08  HB_Client\Debug\link.read.1.tlog

     文件       1094  2012-10-31 11:08  HB_Client\Debug\link.write.1.tlog

     文件        426  2012-10-31 11:08  HB_Client\Debug\mt.command.1.tlog

     文件        594  2012-10-31 11:08  HB_Client\Debug\mt.read.1.tlog

............此处省略73个文件信息

评论

共有 条评论