资源简介
//****************************************************
// 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.em
文件 472 2012-10-30 21:23 HB_Client\Debug\HB_Client.exe.em
文件 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\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 2 2012-10-31 11:08 HB_Client\Debug\li
文件 1838 2012-10-31 11:08 HB_Client\Debug\li
文件 3744 2012-10-31 11:08 HB_Client\Debug\li
文件 1094 2012-10-31 11:08 HB_Client\Debug\li
文件 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个文件信息
相关资源
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 多线程串口通讯
- Win32多线程程序设计--详细书签版
- 基于TCP协议的C/S传输文件C++)
- QT实现视音频实时传输qml+C++
- Linux多线程服务端编程:使用muduo C+
- TCP实现服务器和多客户端通信
- MultiThread(VS2013 MFC多线程-含源码-含个
- C++编写的多线程C/S模式仿QQ软件
- 多线程
- C++ Concurrency in Action 2nd edition235206
- C++多线程网络聊天程序
- MFC中利用多线程实现定时器
- c++实现的C/S模式图书借阅管理系统
- 网络五子棋双人对弈系统
- MFC实现多任务多线程软件
- C++、qt环境下的C/S聊天器
- MFC多线程编程三个
- C++ Socket 多线程多机聊天
- posix 多线程程序设计中文版-带书签
- C++11实现多线程电梯运行
- MFC多线程编程实例120658
- C++并发编程实战(英文版)
- c++并发编程实战C++11完整pdf中文版
- c++ concurrency in action 2nd edition
- 支持多线程和断点续传的FTP客户端
- 完整socket c++
- Win32多线程程序设计 pdf高清
评论
共有 条评论