gpt4 book ai didi

c++ - 如何通过套接字发送 wstring 变量?

转载 作者:行者123 更新时间:2023-11-28 02:15:48 25 4
gpt4 key购买 nike

我必须使用 C++ 在客户端和服务器之间发送信息。我发现以下代码允许我通过连接发送整数。

服务器:

int number = 5;
send(clientSocket, (char*)&number, sizeof(number), 0); //Integer is sent to client

客户:

int number;
recv(serverSocket, (char*)&number, sizeof(number), 0); //Integer is received and assigned to 'number'

但是,我现在尝试使用完全相同的代码(将“int”替换为“wstring”)发送一个 wstring 变量,但无法正确发送值。如何通过套接字发送 wstring 并在客户端接收它?

最佳答案

第 1 步:发送方和接收方就共享字符编码达成一致。如果您同时编写发送者和接收者,这很容易。选一个。最好选择一个在发送和接收平台上都有良好的 C++ 支持库。 UTF-8 通常有很好的支持。

第 2 步:发送方和接收方就如何发出字符串结束信号达成一致。常见的选择是读取到 NULL 并在发送字符串之前发送字符串的长度。有时您希望以字节为单位发送编码字符串的长度,以便更轻松地读取和缓冲编码字符串。

第 3 步:发件人使用商定的编码将字符串编码到 char 缓冲区中。不幸的是,这在 C++ 中比它应该的更困惑。您可能会发现自己回到第 1 步并重新选择编码,因为您选择的编码没有您想象的那么好库支持。

第 4 步 A:将第3步的缓冲区和第2步选择的定长方法写入socket。

步骤 4B:从套接字读取缓冲区,当满足第 2 步中选择的终止条件时停止。如果要查找字符串结束标记或字符串计数,您将必须读取和缓冲,然后逐字节转换,根据需要读取和缓冲更多内容。如果您发送编码字符串的大小,您可以一次读取并缓冲整个字符串,然后让解码器松动。

关于c++ - 如何通过套接字发送 wstring 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com