【发布时间】:2013-09-11 07:45:24
【问题描述】:
我在 SO 上看到过类似的问题,但没有回答我的问题。 在这里,我正在尝试发送和接收字符串:
我正在发送 std::string :
if( (bytecount=send(hsock, input_string.c_str(), input_string.length(),0))== -1)
这样能正确接收吗?
if ((bytecount = recv(*csock, rcv.c_str(), rcv.length(), 0)) == -1)
我收到错误:
错误:recv 行上从“const void*”到“void*”[-fpermissive]` 的无效转换!
【问题讨论】:
-
我编了一个answer 可能对你有帮助。它演示了通过预先发送实际长度来发送任意长度的字符串数据(只需忽略 protobuf 的东西)。
-
@g-makulik:非常感谢!
star pkt;是什么,它适用于 std::string 吗?如果你能写一段代码,我会很高兴的。否则我会尝试自己。 -
star pkt;是 protobuf 生成类的对象实例。它可以从std::string对象反序列化/序列化。这些用于通过套接字发送/接收以及应该证明您的需求。 -
我今天早些时候没有时间为您的案例调整答案。请看一下。