websocket客户端


基于websocket协议 c++语言写的客户端 适合入门者学习
资源截图
代码片段和文件信息
#include “client.h“
 
DWORD WINAPI SendMessageThread(LPVOID IpParameter)
{
    while (1) {
        string talk;
        getline(cin talk);
        //WaitForSingleobject(bufferMutex INFINITE);     // P(资源未被占用)    
        if (“quit“ == talk) {
            talk.push_back(‘‘);
            //          send(sockClient talk.c_str() talk.size() 0);  
            send(sockClient talk.c_str() 200 0);
            break;
        }
        else {
            talk.append(“
“);
        }
        printf(“
I Say:(“quit“to exit):“);
        cout << talk;
        //  send(sockClient talk.c_str() talk.size() 0); // 发送信息  
        int len=send(sockClient talk.c_str() 200 0); // 发送信息  
        //ReleaseSemaphore(bufferMutex 1 NULL);     // V(资源占用完毕)   
    }
    return 0;
}
 
DWORD WINAPI ReceiveMessageThread(LPVOID IpParameter)
{
    //recv;
    inform config_data;
    recv(sockClient (char*)(&config_data) 500 0);
    int IMG_WIDTH = config_data.width;
    int IMG_HEIGHT = config_data.height;
    int CHANNELS = config_data.channels;
    //int BUFFER_SIZE = config_data.buffer_size;
    int LEAST_COMMON_MULTIPLE = config_data.least_common_multiple;
    //send();
    send(sockClient “1“ 5 0);
 
    Mat img(IMG_HEIGHT IMG_WIDTH CV_8UC1 Scalar(0));
    //待接收的图像数据的格式结构体
    struct recvbuf
    {
        //char buf[BUFFER_SIZE];
        char buf[100000];
        //char buf;
        //int length;
        int flag;
    };
    int needRecv = sizeof(recvbuf);  //28804
    int count = 0;
    extern int errno;
    recvbuf data;
    
 
    while (1)
    {
        for (int i = 0; i < LEAST_COMMON_MULTIPLE; i++)
        {
            int pos = 0;
            int len0 = 0;
 
            while (pos < needRecv)
            {
                len0 = recv(sockClient (char*)(&data) + pos needRecv - pos 0);
                //cout << len0 << endl;
                if (len0 < 0)
                {
                    printf(“Server Recieve Data Failed!
“);
                    return -1;
                }
                pos += len0;
            }
 
            count = count + data.flag;
 
            int num1 = IMG_HEIGHT / LEAST_COMMON_MULTIPLE * i;
            for (int j = 0; j < IMG_HEIGHT / LEAST_COMMON_MULTIPLE; j++)
            {
                int num2 = j * IMG_WIDTH * CHANNELS;
                uchar* ucdata = img.ptr(j + num1);
                for (int k = 0; k < IMG_WIDTH * CHANNELS; k++)
                {
                    ucdata[k] = data.buf[num2 + k];
                }
            }
 
            if (data.flag == 2)
            {
                if (count == LEAST_COMMON_MULTIPLE+1)
                {
                    imshow(“client“img);
                    cvWaitKey(1);
                    count = 0;
                }
                else
                {
                    count = 0;
                    i = 0;
                }
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-09-07 16:51  client
     目录           0  2018-09-03 19:38  client.vs
     目录           0  2018-09-03 19:38  client.vsclient
     目录           0  2018-09-03 19:38  client.vsclientv14
     文件       33792  2018-09-07 16:51  client.vsclientv14.suo
     目录           0  2018-09-03 19:38  clientclient
     文件        5359  2018-08-31 16:52  clientclientclient.cpp
     文件         955  2018-07-05 11:41  clientclientclient.h
     文件        7924  2018-09-05 10:34  clientclientclient.vcxproj
     文件        1066  2018-07-04 14:08  clientclientclient.vcxproj.filters
     目录           0  2018-09-03 19:38  clientclientx64
     目录           0  2018-09-05 10:34  clientclientx64Debug
     文件         184  2018-09-05 10:35  clientclientx64Debugclient.log
     文件      316149  2018-09-05 10:34  clientclientx64Debugclient.obj
     目录           0  2018-09-05 10:35  clientclientx64Debugclient.tlog
     文件        1430  2018-09-05 10:34  clientclientx64Debugclient.tlogCL.command.1.tlog
     文件       38716  2018-09-05 10:34  clientclientx64Debugclient.tlogCL.read.1.tlog
     文件         556  2018-09-05 10:34  clientclientx64Debugclient.tlogCL.write.1.tlog
     文件         207  2018-09-05 10:35  clientclientx64Debugclient.tlogclient.lastbuildstate
     文件        2704  2018-09-05 10:34  clientclientx64Debugclient.tloglink.command.1.tlog
     文件        3588  2018-09-05 10:34  clientclientx64Debugclient.tloglink.read.1.tlog
     文件         538  2018-09-05 10:34  clientclientx64Debugclient.tloglink.write.1.tlog
     文件     1420288  2018-09-05 10:34  clientclientx64Debugvc140.idb
     文件      937984  2018-09-05 10:34  clientclientx64Debugvc140.pdb
     文件    34828288  2018-09-07 16:51  clientclient.VC.db
     文件        2059  2018-09-06 14:26  clientclient.sln
     目录           0  2018-09-03 19:38  clientx64
     目录           0  2018-09-03 19:38  clientx64Debug
     文件      111616  2018-09-05 10:34  clientx64Debugclient.exe
     文件      602424  2018-09-05 10:34  clientx64Debugclient.ilk
     文件     2125824  2018-09-05 10:34  clientx64Debugclient.pdb
............此处省略1个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)