小编Use*_*ser的帖子

C++中基于TCP套接字的可变长度消息

我试图向服务器发送一些长度前缀数据,我已经通过使用其他人在堆栈溢出时发布的代码和解决方案更加努力.仍在寻找使用TCP实际工作的东西.我不太了解(关于网络编程,但我知道理论概念).我正在写我到目前为止所尝试的内容.基于此我有一些问题.

因为我们Char Buffer[200] = "This is data"在客户端使用将(使用send()函数)字符串和char类型数据发送到服务器(使用recv()函数接收).直到这里没关系,但如果我需要发送一些带有长度信息的可变长度消息呢?,我如何编码长度信息到消息?

for example:  0C     54 68 69 73 20 69 73 20 64 61 74 61     07    46 72 6f 6d 20 6d 65
           (length)  T  h   i  s    i   s     d  a  t  a   (length) F  r  o  m     m  e


How can i interpret these two message seperately from tcp stream  at the sever side ?
Run Code Online (Sandbox Code Playgroud)

我不知道如何发送长度信息?或者,如果有人能够理解我的测试用例(在下面的编辑中给出)来验证字符串的长度信息.

编辑:似乎没关系,但我只需要验证一下前缀长度.我发送20个字节("这是我的数据")到服务器.我收到的长度大小是4个字节(我不知道里面是什么,我需要验证我收到的4字节长度是否包含0000 0000 0000 0000 0000 00000 0001 0100).多数民众赞成它,所以我认为通过将长度信息移动2位来验证它的方式现在应该看起来像(我收到的4个字节长度包含0000 …

c++ network-programming tcp

4
推荐指数
1
解决办法
5497
查看次数

如何使用QML控件元素(如组合框,文本字段,复选框等)创建消息对话框

我想以下面的方式创建一个消息对话框

例如:我的组合框有2个名称," chkbx "(复选框的符号名称)," txtedt "(文本字段的符号名称).

每当我从组合框下拉列表中选择chkboxtxtedt时,我的组合框应该分别将我连接到实际的checkbox和textedit元素.

状态栏上有一个" 显示对话框"按钮,当我按下该按钮时,它应该弹出选中的选项(复选框或行编辑)

请建议我怎么做.

编辑这里是代码和我面对的组合框选项的问题是,我既不能在我的消息对话框中获取图标也不知道我怎么能在消息对话框中看到复选框或行编辑,我是一个初学者和挣扎探索QML中使用的棘手方法..

import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.1
import QtQuick.Window 2.0


Item {
    id: root
    width: 580
    height: 400
    SystemPalette { id: palette }
    clip: true

    //! [messagedialog]
    MessageDialog {
        id: messageDialog
        visible: messageDialogVisible.checked
        modality: messageDialogModal.checked ? Qt.WindowModal : Qt.NonModal
        title: windowTitleField.text
        text: customizeText.checked ? textField.text : ""
        informativeText: customizeInformativeText.checked ? informativeTextField.text : ""
        onButtonClicked: console.log("clicked button " + clickedButton)
        onAccepted: lastChosen.text …
Run Code Online (Sandbox Code Playgroud)

combobox qml messagedialog qt-quick qt5

4
推荐指数
1
解决办法
1万
查看次数

如何拆分ASCII字符的十六进制字节

我基本上想做的是

对于例如:"A"六角equivalant是0x61,我可以拆分6161,并将其保存为'6''1'

缓冲区正在接收如下数据:

rx_dataframe.data[0] is H'00,'.'// H' is Hex equivalant and '' is ASCII value
rx_dataframe.data[0] is H'31,'1'
rx_dataframe.data[0] is H'32,'2'
rx_dataframe.data[0] is H'33,'3'
Run Code Online (Sandbox Code Playgroud)

我需要转换hex values 0x00,0x31,0x32,0x33为char值'0','0','3','1','3','2';'3','3' 并将它们存储在的位置tx_buff_data[];

我想要tx_buff_data这样的样子

tx_buff_data[0] have H'30,'0'
tx_buff_data[1] have H'30,'0'
tx_buff_data[2] have H'33,'3'
tx_buff_data[3] have H'31,'1'
tx_buff_data[4] have H'33,'3'
tx_buff_data[5] have H'32,'2'
tx_buff_data[6] have H'33,'3'
tx_buff_data[7] have H'33,'3'
Run Code Online (Sandbox Code Playgroud)

c microcontroller low-level-code

3
推荐指数
1
解决办法
2541
查看次数

使用 Windows 版 Git 的 patch.exe 时出现“断言失败”

我有一个目录包含几个要修改的文件。我没有手动进行更改(因为文件太多),而是下载了一个 diff 文件(由其他用户制作),这个 diff 文件由 .bat 文件执行。

让我让它更系统。

  1. bat文件是WinDDK_7600.16385.1_patch.bat这个文件的路径是( C:\Users\kunze\Documents\Visual Studio 2010\Projects\busmaster-master\Documents\1 Development Environment\files)

这个文件的内容是

@echo on

set PATH=%PATH%;%ProgramFiles%\Git\bin

patch -p1 -d C:/ < WinDDK_7600.16385.1.diff

pause
Run Code Online (Sandbox Code Playgroud)
  1. 当我运行 bat 文件时,它将运行,WinDDK_7600.16385.1.diff并且此差异文件对 .bat 中的许多文件进行了更改C:\WinDDK。这个文件的路径是C:\Users\kunze\Documents\Visual Studio 2010\Projects\busmaster-master\Documents\1 Development Environment\files

  2. 需要更新差异的文件位于此目录中 C:\WinDDK

  3. 我已经为 git/bin 设置了路径环境变量

  4. 有人可以让我知道我应该在我的WinDDK_7600.16385.1_patch.bat 文件中进行哪些更改, 以便它可以找到并更新位于C:\WinDDK目录中的所有文件

我试了好几次,每次都出现这个错误"Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354"?有什么问题吗?

windows patch batch-file

2
推荐指数
1
解决办法
2576
查看次数

如何使用 QML 工具按钮填充 QTableview

我需要按红色圆圈下的创建按钮,然后按此按钮我试图填充表格视图的第一行。我是 QT Quick 的新用户,请帮助我。我浪费了很多时间却没有办法。

我还提供了 UI 和代码,请查看。

谢谢 !在此输入图像描述

    import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.0
import QtQuick.Dialogs 1.0
import "content"
import "images"

ApplicationWindow {
    visible: true
    title: "Mask Editor: Subsystem"

    width: 720
    height: 420
    minimumHeight: 400
    minimumWidth: 720

    statusBar: StatusBar {
        id: minstatusbar

            RowLayout {
                id:row1
              spacing: 2
              width: parent.width
              Button {
                  text:"Unmask"

              }
              Item { Layout.fillWidth: true }
                Button {
                    text:"OK"

                }
                Button {
                    text:"Cancel"

                }
                Button {
                    text:"Help"

                }
                Button {
                    text:"Apply"
                }
            }
        } …
Run Code Online (Sandbox Code Playgroud)

qml qt-quick qt5 qtquickcontrols qqmlcomponent

2
推荐指数
1
解决办法
2180
查看次数

C语言代码中的重复符号"buf_position"

在这个程序中我得到错误,在C ..\async.obj中复制符号"_buf_position"我已经将buf_position声明为全局变量我不知道这段代码有什么问题,有人可以看看.

//async.h文件

extern uint8_t buffer[10];
extern uint32_t buf_position = 0;
extern uint8_t local_buff[10];
extern uint32_t retVal; 
Run Code Online (Sandbox Code Playgroud)

//async.c文件

#include "async.h"
void Transmit_Data(void)
{ 
.............
...........
}

void Excep_SCI0_RXI0(void)//This is a recive interrupt,when some data is available on serialport
{

  buffer[buf_position++]= SCI0.RDR;
}
Run Code Online (Sandbox Code Playgroud)

// main.c

#include "async.h"

void main(void)
{
    while(buffer[buf_position-1]=='\r')
    {
        memcpy(local_buff,buffer,buf_position-1);
        Display_LCD(LCD_LINE1, local_buff);
        Transmit_Data(); 
        buf_position = 0;
        //memset(buffer,0,sizeof(buffer));
    }
}
Run Code Online (Sandbox Code Playgroud)

c microcontroller

1
推荐指数
1
解决办法
68
查看次数

在c编程中添加两个ASCII值

我收到一个十六进制值

uint8_t length = rx_dataframe.dlc// Current value of this in hex is 0x08
Run Code Online (Sandbox Code Playgroud)

我试图从这个值得到一个char值("8").根据ASCII表,十六进制值"8"是0x38.我试过直接添加"0"但在这里感到困惑

tx_buff_dlc[0]= (rx_dataframe.dlc)+"0";// I know its not currect but just thought  
Run Code Online (Sandbox Code Playgroud)

tx_buff_dlc[0]=0x08+0x30将等于0x038并将获得"8"

有人可以解释如何在C中完成十六进制值的添加

c microcontroller

0
推荐指数
1
解决办法
197
查看次数

错误:c中的重复符号错误

我成功地能够在我的Visual Studio项目中使用相同的文件,但是当我尝试在微控制器特定的SDK中编译时.它给了我错误:

Duplicate symbol "key" in "C:\WorkSpace\code.obj
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我只有2个位置的密钥,它们看起来显然是独立的,这是一个头文件,我相信我只包含一次.

//sha256.h
#include <stdio.h> 
#include <string.h>
#define uchar unsigned char // 8-bit byte
#define uint unsigned int // 32-bit word

typedef struct {
   uchar data[64];
   uint datalen;
   uint bitlen[2];
   uint state[8];
} SHA256_CTX;

uint key[64] = {
   0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,
   0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,
   0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
   0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,
   0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,
   0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
   0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,
   0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
};


void sha256_transform(SHA256_CTX *ctx, uchar data[])
{  


   for (i = 0; i < 64; ++i) {
      t1 = h + EP1(e) + CH(e,f,g) + …
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
196
查看次数