请教TCP Client如何发送一个回车

weixin_41870591 2019-06-27 11:10:14
请教TCP Client发送完一段字符串后如何发送一个回车
我现在的发送端发送了字符串 PRESET -a 1 (1后面有空格)
接收端收到:50 52 45 53 45 54 20 2D 61 20 31 20
这段字符串后还需要一个 0D 我的指令才能控制接收端程序,那么这个 0D 在发送端该怎么写,才能让接收端收到 0D
也就是接收端需要收到:50 52 45 53 45 54 20 2D 61 20 31 20 0D 才能受控
感谢大神指教,新手不懂TCP
...全文
1336 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
gouyanfen 2019-06-28
  • 打赏
  • 举报
回复
引用 13 楼 weixin_41870591 的回复:
[quote=引用 11 楼 gouyanfen的回复:][quote=引用 10 楼 weixin_41870591 的回复:] [quote=引用 9 楼 gouyanfen的回复:]我在讨论代码,你在讨论软件,不是一个频道,发送一个回车 char * SendData="PRESET -a 1 \n"; send(SocketID,(char*)&SendData,strlen(SendData)+1, 0); 就解决了,不是写代码的话,就没法讨论的
好吧,主要我不懂代码,谢谢了! 我就是单纯的想知道用这个软件发什么内容过去能达到我的目的,让接收端能收到0D 因为尾部要有0D我才能控制实际受控的设备[/quote] 本身这就不是个事,你硬要用别人写好的只发送可见字符的软件发不可见字符。有原代码的话,稍改下,没有的话就另找个能发的[/quote] 补充一下,主要是我的受控端是进口的硬件我没法修改,他不收到0D不执行命令, 这个0D应该是告诉他“我发完了,你执行吧”[/quote] 这个事是个很简单的事,用代码弄的话
weixin_41870591 2019-06-28
  • 打赏
  • 举报
回复
引用 11 楼 gouyanfen的回复:
[quote=引用 10 楼 weixin_41870591 的回复:] [quote=引用 9 楼 gouyanfen的回复:]我在讨论代码,你在讨论软件,不是一个频道,发送一个回车 char * SendData="PRESET -a 1 \n"; send(SocketID,(char*)&SendData,strlen(SendData)+1, 0); 就解决了,不是写代码的话,就没法讨论的
好吧,主要我不懂代码,谢谢了! 我就是单纯的想知道用这个软件发什么内容过去能达到我的目的,让接收端能收到0D 因为尾部要有0D我才能控制实际受控的设备[/quote] 本身这就不是个事,你硬要用别人写好的只发送可见字符的软件发不可见字符。有原代码的话,稍改下,没有的话就另找个能发的[/quote] 补充一下,主要是我的受控端是进口的硬件我没法修改,他不收到0D不执行命令, 这个0D应该是告诉他“我发完了,你执行吧”
weixin_41870591 2019-06-28
  • 打赏
  • 举报
回复
引用 11 楼 gouyanfen的回复:
[quote=引用 10 楼 weixin_41870591 的回复:] [quote=引用 9 楼 gouyanfen的回复:]我在讨论代码,你在讨论软件,不是一个频道,发送一个回车 char * SendData="PRESET -a 1 \n"; send(SocketID,(char*)&SendData,strlen(SendData)+1, 0); 就解决了,不是写代码的话,就没法讨论的
好吧,主要我不懂代码,谢谢了! 我就是单纯的想知道用这个软件发什么内容过去能达到我的目的,让接收端能收到0D 因为尾部要有0D我才能控制实际受控的设备[/quote] 本身这就不是个事,你硬要用别人写好的只发送可见字符的软件发不可见字符。有原代码的话,稍改下,没有的话就另找个能发的[/quote] 好,非常感谢,那是我的思路不对哈哈 有这方面的软件推荐吗,能发送和监听tcp满足我这种发不可见字符的
走好每一步 2019-06-28
  • 打赏
  • 举报
回复
引用 楼主 weixin_41870591 的回复:
请教TCP Client发送完一段字符串后如何发送一个回车 我现在的发送端发送了字符串 PRESET -a 1 (1后面有空格) 接收端收到:50 52 45 53 45 54 20 2D 61 20 31 20 这段字符串后还需要一个 0D 我的指令才能控制接收端程序,那么这个 0D 在发送端该怎么写,才能让接收端收到 0D 也就是接收端需要收到:50 52 45 53 45 54 20 2D 61 20 31 20 0D 才能受控 感谢大神指教,新手不懂TCP
找个TCP调试工具,能够发送十六进制就可以了。NetAssist.exe
赵4老师 2019-06-28
  • 打赏
  • 举报
回复
'\n ','\x0A','\x0a',10 '\r','\x0D','\x0d',13 电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
sichuanwww 2019-06-28
  • 打赏
  • 举报
回复
不懂代码?讨论了半天代码
赵4老师 2019-06-27
  • 打赏
  • 举报
回复
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
gouyanfen 2019-06-27
  • 打赏
  • 举报
回复
引用 10 楼 weixin_41870591 的回复:
[quote=引用 9 楼 gouyanfen的回复:]我在讨论代码,你在讨论软件,不是一个频道,发送一个回车 char * SendData="PRESET -a 1 \n"; send(SocketID,(char*)&SendData,strlen(SendData)+1, 0); 就解决了,不是写代码的话,就没法讨论的
好吧,主要我不懂代码,谢谢了! 我就是单纯的想知道用这个软件发什么内容过去能达到我的目的,让接收端能收到0D 因为尾部要有0D我才能控制实际受控的设备[/quote] 本身这就不是个事,你硬要用别人写好的只发送可见字符的软件发不可见字符。有原代码的话,稍改下,没有的话就另找个能发的
weixin_41870591 2019-06-27
  • 打赏
  • 举报
回复
引用 9 楼 gouyanfen的回复:
我在讨论代码,你在讨论软件,不是一个频道,发送一个回车 char * SendData="PRESET -a 1 \n"; send(SocketID,(char*)&SendData,strlen(SendData)+1, 0); 就解决了,不是写代码的话,就没法讨论的
好吧,主要我不懂代码,谢谢了! 我就是单纯的想知道用这个软件发什么内容过去能达到我的目的,让接收端能收到0D 因为尾部要有0D我才能控制实际受控的设备
gouyanfen 2019-06-27
  • 打赏
  • 举报
回复
我在讨论代码,你在讨论软件,不是一个频道,发送一个回车 char * SendData="PRESET -a 1 \n"; send(SocketID,(char*)&SendData,strlen(SendData)+1, 0); 就解决了,不是写代码的话,就没法讨论的
weixin_41870591 2019-06-27
  • 打赏
  • 举报
回复
引用 7 楼 gouyanfen的回复:
发你的发送代码看一下
我现在的发送端发送了字符串 PRESET -a 1 (1后面有空格) 接收端收到: 50 52 45 53 45 54 20 2D 61 20 31 20 但是我的接收端需要收到: 50 52 45 53 45 54 20 2D 61 20 31 20 0D 才能执行受控,问题就是怎么把0D加在后面发给他
gouyanfen 2019-06-27
  • 打赏
  • 举报
回复
发你的发送代码看一下
weixin_41870591 2019-06-27
  • 打赏
  • 举报
回复
引用 5 楼 gouyanfen的回复:
[quote=引用 4 楼 weixin_41870591 的回复:] [quote=引用 3 楼 赵4老师的回复:]'\r' '\x0d'
这两个用过,都是不对的[/quote] 估计是你的协议没分析清楚,传送数据0D不一定是回车的意思,要看接收端怎么解析这个数字[/quote] 就是用TCP Client这个软件测试的呀,我的目的其实也不是一定要发回车,接收端在我发送的字符串末尾能收到0D就行
gouyanfen 2019-06-27
  • 打赏
  • 举报
回复
引用 4 楼 weixin_41870591 的回复:
[quote=引用 3 楼 赵4老师的回复:]'\r' '\x0d'
这两个用过,都是不对的[/quote] 估计是你的协议没分析清楚,传送数据0D不一定是回车的意思,要看接收端怎么解析这个数字
weixin_41870591 2019-06-27
  • 打赏
  • 举报
回复
引用 3 楼 赵4老师的回复:
'\r' '\x0d'
这两个用过,都是不对的
赵4老师 2019-06-27
  • 打赏
  • 举报
回复
'\r' '\x0d'
weixin_41870591 2019-06-27
  • 打赏
  • 举报
回复
引用 1 楼 赵4老师的回复:
电脑内存或文件内容或传输内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容或传输内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}
这不是我要的答案呀, 我问的是我要在发送的时候在PRESET -a 1 之后加什么 才能让接收端收到 50 52 45 53 45 54 20 2D 61 20 31 20 0D

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧