c - 在 C 套接字中逐字节发送数据

标签 c

我的代码:

void send_message(const Connection* conn, const NetworkMessage *message)
{
    Connection *c = (Connection *)conn;
    int32_t i =0;
    CHECK_NMSG()
    if (!conn || conn->closed) {
        alog("error trying to send network message, connection dead?\n");
        return;
    }
#if _DEBUG
    alog("Sending NetworkMessage, size = %u\n",message->size);
#endif
    do {
       send_socket(c,&message->buffer[i]);
       i++;
#if _DEBUG
        alog("send_message():\n\tmessage->buffer[i] = %c\n",message->buffer[i]);
#endif
    } while (i < message->size && i < NETWORKMESSAGE_MAX_SIZE);
#if _DEBUG
   alog("NetworkMessage sent\n");
#endif
}

它在控制台输出的是:

[18:03:04.545] Sending NetworkMessage, size = 16
[18:03:04.546] send_message():
        message->buffer[i] = [18:03:04.548] send_message():
        message->buffer[i] = [18:03:04.549] send_message():
        message->buffer[i] = H
[18:03:04.550] send_message():
        message->buffer[i] = e
[18:03:04.552] send_message():
        message->buffer[i] = l
[18:03:04.553] send_message():
        message->buffer[i] = l
[18:03:04.554] send_message():
        message->buffer[i] = o
[18:03:04.555] send_message():
        message->buffer[i] = 9
[18:03:04.556] send_message():
        message->buffer[i] = [18:03:04.556] send_message():
        message->buffer[i] = [18:03:04.557] send_message():
        message->buffer[i] = 1
[18:03:04.558] send_message():
        message->buffer[i] = 2
[18:03:04.559] send_message():
        message->buffer[i] = 7
[18:03:04.560] send_message():
        message->buffer[i] = .
[18:03:04.561] send_message():
        message->buffer[i] = 0
[18:03:04.563] send_message():
        message->buffer[i] = .
[18:03:04.565] NetworkMessage sent

我收到的是:

5Hello9ello9llo9lo9o99127.0.0.127.0.0.17.0.0.1.0.0.10.0.1

我期望的是:

5Hello9127.0.0.1

有什么想法吗?如果需要更多代码,请发帖

最佳答案

这两个字符串走进一家酒吧坐下。酒保说:“那要点什么呢?”

第一个字符串说,“I think I'll have a beer quag fulk boorg jdk^CjfdLk jk3s d#f67howe%^U r89nvy~~owmc63^Dz x.xvcu”

“请原谅我的 friend ,”第二个字符串说,“他没有以 null 结尾。”

关于c - 在 C 套接字中逐字节发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5666139/

相关文章:

c++ - 揭秘 lpthreads 下的 gcc

c - azure-iot-sdk-c 反序列化 JSON 负载

c - 使用单个函数调用写入多个文件描述符

c++ - Eclipse 项目引用 C

计算自1970/1/1以来经过了多少时间(精确到毫秒)

c - C 中的刷新输出缓冲区 (cgi)

c - linux 套接字客户端/服务器程序

c - xmlReadMemory 不保留原始格式的空节点

c - 将指向静态分配矩阵的指针传递给函数 - c

c - 文件处理和字符串(登录系统)