gpt4 book ai didi

c++ - 通过套接字将数据作为字符串发送的好方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:00 26 4
gpt4 key购买 nike

由于有几种方法可以通过套接字以字符串形式交换数据,例如:

  • 使用如下函数:

    1. sprintf()sscanf()
    2. snprintf()sscanf()
    3. printf()strtof()
  • 或转换为 char,然后将其作为数组传递

如果您能建议哪种方式以及为什么它比其他方式更有效和更好,或者是否有其他上面没有提到的方式,我将不胜感激。目前我使用的是最简单的方法,我指的是 sprintf()sscanf() 函数。但我在网上读到,例如使用 snprintf() 函数更安全。

最佳答案

如果您只是想发送字符串,您可以这样处理;它是一种简单形式的序列化:一个包含以下数据大小的 header ..(伪代码)

Send( socket, const string& str )
{
const size_t len = str.length();
send( socket, &len, sizeof( len ) );
send( socket, str.data(), len );
}

Receive( socket, string& str )
{
size_t len;
receive( socket, &len, sizeof( len ) );
str.resize( len );
receive( socket, str.data(), len );
}

编辑:见评论 1,更快的 Send 方法是

Send( socket, const string& str, rawmemory& packet )
{
const size_t len = str.length();
packet.Reserve( len + sizeof( len ) );
packet.ResetOffset();
packet.CopyFrom( &len, sizeof( len ) );
packet.CopyFrom( str.data(), len );
send( socket, packet.Data(), packet.Length() );
}

关于c++ - 通过套接字将数据作为字符串发送的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1957605/

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