winSocket客户端简单示例

pro文件注意添加

LIBS += -lws2_32
#ifndef SOCKETCLIENT_H
#define SOCKETCLIENT_H

#include <QObject>
#include <winsock2.h>
#include <queue>
using namespace std;
class socketClient : public QObject
{
    Q_OBJECT
public:
    explicit socketClient(QObject *parent = nullptr);

signals:

public slots:

    void run();

private:
    SOCKET m_client;
    SOCKET m_server;
    queue<string> m_recv;

};

#endif // SOCKETCLIENT_H
#include "socketclient.h"
#include <QDebug>
socketClient::socketClient(QObject *parent) : QObject(parent)
{
    WORD socketVersion = MAKEWORD(2,2);
    WSADATA wasData;
    if(WSAStartup(socketVersion,&wasData) != 0)
    {
        qDebug() << "socket init error...";
    }

    m_client = socket(AF_INET,SOCK_STREAM,0);

    if(m_client == INVALID_SOCKET)
    {
      qDebug() << "socket init error...";
    }

    sockaddr_in addr;
    addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    addr.sin_family = AF_INET;
    addr.sin_port = htons(8080);

    if(::connect(m_client,(sockaddr*)&addr,sizeof (addr)) < 0)
    {
        closesocket(m_client);
    }

}

void socketClient::run()
{
    while(1)
    {
        char buff[1024] = {0};
        int recvSize = recv(m_client,buff,1024,0);

        if(recvSize > 0)
        {
            m_recv.push(buff);
        }
        if(m_recv.size() > 0)
        {
            string sendbuff = m_recv.front();
            m_recv.pop();

            send(m_client,sendbuff.c_str(),sendbuff.length(),0);
        }


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值