变量中的字符串在通过套接字发送之前发生更改
string in variable changes before sending through socket
我有以下场景,一个双套接字连接(一个充当服务器,另一个充当到客户端的连接)。
我在服务器套接字上收到一个命令,根据该命令,我正在构建一个字符串,并通过另一个套接字发送给客户端。
如果命令到达的速度不太快,这会很好地工作,但如果我在短时间内多次收到命令"test123",总是会发生下一条要发送的消息的一部分已经保存到我正在构建的字符串中。
我正在以这种方式对我可以接收的命令进行排序:
if (command == "test123"){
command_send = "asdf123";
buf = string_a + "," + command_send + "," + string_b + "n";
}
else if (command == "123test"){
command_send = "123asdf";
buf = string_a + "," + command_send + "," + string_b + "n";
}
等等,还有其他一些。。。。
然后我将字符串转换为字符*:
const char *msg_s = buf.c_str();
发送消息:
bytes_sent_s = send(socketfd_s, msg_s, len_s, 0)
在命令test123被发送10次的情况下,我的buf包含第一个命令的一部分,并且在命令的中间包含一部分,该部分之后应该被发送。然后我要发送的字符串看起来像"stringa,asdf123,asdf,stringb"或类似的东西。
我做错了什么?
问题不在于发送部分,而在于接收部分。我现在正在检查收到的字符串,直到出现新行,现在它工作了。
我还使用boost实现了异步通信。
相关文章:
- C++ TCP 套接字 | 无法将"std::__cxx11::字符串"转换为"const
- 通过 TCP 套接字发送大型 base64 字符串
- 无法通过 C++ 中的套接字发送字符串流变量
- 套接字缓冲区到字符串
- C++ 从末尾包含空字符的套接字读取字符串
- 将大字符串发送到套接字
- 使用套接字编程的c++中的字符串流与ifstream(ofstream)
- 写入套接字接收的进程字符串的输入
- 通过套接字C++发送长字符串
- 正在打开具有零填充IP字符串的升压套接字
- 变量中的字符串在通过套接字发送之前发生更改
- 如何使用字符串在Qt中使用套接字发送/接收XML数据
- C++ Linux 套接字,它在单个调用中将字符串数组 (char**) 作为串联字符串发送
- 由于PROTOBUF服务器中的字符串数据类型变量和客户端通过cpp中recv端的套接字进行通信,因此正在获取segfau
- char数组到字符串的转换会产生奇怪的字符-套接字
- 如何通过套接字读取从PHP发送到Qt服务器应用程序的字符串
- 内存泄漏-与套接字或字符串相关
- 这些通过套接字发送/接收字符串的函数有什么问题?
- c++通过套接字发送字符串
- 通过ZeroMQ以字符串形式接收对象,然后通过另一个套接字以零拷贝发送对象的正确方法是什么