将windows socket 初始化接口封装成一个类,方便好用

在windows 下进行socket 编程时,首先要进行网络接口初始化,这里将初始化接口封装成一个类,然后在程序中直接实例化一个全局对象即可完成所有动作,很方便,这里贴上封装代码:
WinSockSystem.h

#pragma once
#include <Winsock2.h>

#pragma comment(lib,"ws2_32.lib")

class WinSocketSystem
{
public:
    WinSocketSystem()
    {
        int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
        if (iResult != NO_ERROR)
        {
            exit(-1);
        }
    }

    ~WinSocketSystem()
    {
        WSACleanup();
    }

protected:
    WSADATA wsaData;
};

然后在全局一个对象即可完成所有初始化动作。

环境:Windows XP SP 3、 VC++ 6.0、 Windows Server 2003 SDK 使用步骤: 1、下载解压之后,使用VC++ 6.0 IDE打开.dws文件 2、点击“!”按钮运行程序 3、如果一切正常会出现一个对话框,然后选择下拉框中的“服务端”启动服务器进程--接着点击“监听”按钮 4、然后再点击“!”按钮运行客户端进程 5、如果一切正常,那么选择下拉框中的“客户端”启动客户端进程--接着点击“连接”按钮,让客户端连接到socket服务器 6、在客户端的“消息”栏中输入信息,然后点击“发送”按钮 7、点击服务器端进程,应该可以看见客户端发送过来的消息,然后可以在“消息”栏中输入响应信息,然后点击“发送”按钮,此时会在客户端进程中看服务器端进程响应的信息 该示例是实现了一个客户端对象对应一个服务端对象的socket的网络编程--最简单的VC++的网络编程示例。该示使用主要是自定义一个--它继承MFC库中CAsyncSocket,然后重写OnAccept, OnSend, OnReceive和OnClose方法来实现一对一的VC++的socket网络编程。注意:自定义关联应用向导生的对话框,需要在头文件中书写语句“class CHelloSocketDlg;”,并且在.cpp文件中写入语句“#include "HelloSocketDlg.h";”,否则编译不会通过! 本示例使用Dialog模式的UI是为方便说明socket编程,在对话框的OnInitDialog方法有初始化员变量的注释说明,在自定义中的注释非常详细。本人觉得MFC使用异步通信CAsyncSocket实现Java中的ServerSocketSocket编程效果,是非常牛的!(虽然本人认为它还封装得不够OO--因为它封装得让使用者觉得“很傻很天真”)。
好的,我可以帮您解答这个问题。以下是一个使用Qt的socket的示例代码: ```cpp #include <QObject> #include <QTcpSocket> class MySocket : public QObject { Q_OBJECT public: MySocket(QObject* parent = nullptr) : QObject(parent) { m_socket = new QTcpSocket(this); connect(m_socket, &QTcpSocket::connected, this, &MySocket::connected); connect(m_socket, &QTcpSocket::disconnected, this, &MySocket::disconnected); connect(m_socket, &QTcpSocket::readyRead, this, &MySocket::readyRead); connect(m_socket, static_cast<void(QAbstractSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), this, &MySocket::error); } virtual ~MySocket() { m_socket->close(); delete m_socket; } public: void connectToHost(const QString& host, quint16 port) { m_socket->connectToHost(host, port); } void disconnectFromHost() { m_socket->disconnectFromHost(); } void write(const QByteArray& data) { m_socket->write(data); } signals: void connected(); void disconnected(); void readyRead(); void error(QAbstractSocket::SocketError); private: QTcpSocket* m_socket; }; ``` 在这个代码中,我们将所有socket的功能封装在了一个名为`MySocket`的中。该继承自`QObject`,并包含了一个`QTcpSocket`对象,并在构造函数中连接了与该对象相关的几个信号。 此外,`MySocket`还包含了一些公共函数,如连接主机、断开连接和写入数据的函数。在实际使用中,我们可以将该实例化并调用其公共函数来使用socket
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值