C++ TCP客户端网络消息发送接收同步实现

本文介绍了如何在C++中实现TCP客户端的同步消息发送和接收。通过将socket设置为阻塞模式,设置接收超时以及消息类型区分,确保消息处理的同步进行,避免异步操作带来的复杂性。
摘要由CSDN通过智能技术生成

  废话不多说, 直入主题, 我们在写客户单的时候希望在哪里发消息出去,然后在哪里返回消息(同步), 然后继续往下运行-, 而不是在这里发送了一个消息给服务端, 在另一个地方接受消息(异步) , 也不知道等多久, 才收到消息, 等收到消息在通知发送消息的地方, 让程序继续往下运行, 这样想想异步实在太麻烦了, 

  实现同步的思想: 1 将socket设置成阻塞的, 2: 设置接受超时, 3: 消息类型区分

直接上代码

封装socket 头文件

#pragma once
#include <string>
#include <Winsock2.h>

using namespace std;
class TcpSocket
{
public:
	TcpSocket();
	~TcpSocket();

	bool SocketInit();
	bool CreatSocket(string strIp, int nPort);
	bool SendMsg(int msgType, string strSendBuf, string& strRecvMsg, int iTimeOut);

private:
	SOCKET m_Scoket;
	DWORD m_dwVserion;
	WSADATA m_WsData;
	int m_iError;
	bool m_isSocketFlag;
};

 socket封装实现

#include "TcpSocket.h"
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable:4996)

TcpSocket::TcpSocket()
{
    m_dwVserion = 0;
    m_isSocketFlag = true;
    memset(&m_WsData, 0, sizeof(WSADATA));
}


TcpSocket::~TcpSocket()
{
    closesocket(m_Scoket);
    WSACleanup();
}

bool TcpSocket::SocketInit()
{
    m_dwVserion = MAKEWORD(1, 1);
    m_iError = WSAStartup(m_dwVserion, &m_WsData);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值