【发布时间】:2021-11-20 00:12:00
【问题描述】:
我在 C 和 C++ 套接字编程方面的背景一般。
暂时作为项目的一部分,我不得不检查 Python 3 中的套接字编程。
我正在查看以下示例:
https://support.mecademic.com/support/solutions/articles/64000253388-python-example-simple-tcp-ip-socket-client
关于命令client.send(bytes(cmd+'\0','ascii'))
我知道如果使用网络套接字等低级数据连接,Python 3 将数据作为字节字符串传输:数据类型字节。
突然间,我在想这个命令将如何由 c/c++ 客户端实现,但我对缓冲区的编码/解码部分感到困惑。
我们以以下基于 poco 库的客户端为例
https://searchcode.com/codesearch/view/25852263/
在所有示例中,缓冲区都是字符数组。
我想问的是,如果有人想用一个 c++ 像上面一个,那么发送和接收部分保持不变?
e.x
int n = ss.sendBytes("hello", 5);
char buffer[256];
n = ss.receiveBytes(buffer, sizeof(buffer));
意味着默认情况下 C char 数组是 ascii 编码的?
或者应该在发送缓冲区之前将例如 ascii 字符串转换为字节数组,如下例所示:
https://www.includehelp.com/c/convert-ascii-string-to-byte-array-in-c.aspx
因此接收也需要任何解码?
【问题讨论】: