在通过套接字发送之前变量中的字符串

时间:2015-02-12 18:27:24

标签: c++ sockets network-programming

我有以下场景,一个双插槽连接(一个充当服务器,另一个充当与客户端的连接)。

我在服务器套接字上收到一个命令,根据命令,我正在构建一个字符串,我通过另一个套接字发送给客户端。

如果命令没有到达太快,这很有效,但是如果我得到命令" 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";
        }

依此类推,如果还有以下几点......

然后我将字符串转换为char *:

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"或类似的东西。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题不是发送部分,而是接收。我现在正在检查收到的字符串,直到换行出现,现在它可以正常工作。

我还使用boost实现了异步通信。