小编Jam*_*ong的帖子

通过UDP发送时丢失数据

我编写了一个UDP发送/接收函数来发送一个结构并监听另一个结构.字节必须按特定顺序发送,但这正好我正在使用#pragma pack(1).我现在唯一的问题是,如果结构中出现任何Null值(0x00),则Null消失后的其余数据.

我想有一些相当简单的事情,我做错了,但这是我的代码:

typedef u_int8_t NN;
typedef u_int8_t X;
typedef int32_t S;
typedef u_int32_t U;
typedef char C;

typedef struct{
    X test;
    NN test2[2];
    C test3[4];
    S test4;
} Test;

int main(int argc, char** argv)
{
    Test t;
    memset( &t, 0, sizeof(t));
    t.test = 0xde;
    t.test2[0]=0xad; t.test2[1]=0x00;
    t.test3[0]=0xbe; t.test3[1]=0xef; t.test3[2]=0xde; t.test3[3]=0xca;
    t.test4=0xde; 

    LogOnResponse response;

    udp_send_receive(&t, &response);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的发送/接收功能:

int send_and_receive(void* message, void* reply, int do_send, int expect_reply)
{
    struct sockaddr_in …
Run Code Online (Sandbox Code Playgroud)

c sockets struct udp

0
推荐指数
1
解决办法
196
查看次数

标签 统计

c ×1

sockets ×1

struct ×1

udp ×1