如何在socket上编写通用指针?

时间:2014-05-27 10:18:20

标签: c++ sockets

如何在C ++中的tcp套接字上写入void *?特别是,我需要知道类型,因为我不知道它的数据大小吗?

在这个例子中,我不知道buf的数据大小:

foo(const void *buf, int socket){
int n= write(socket , buf, ???);
}

1 个答案:

答案 0 :(得分:3)

当然,您需要知道要写入的对象的大小。您不必知道确切的类型,但至少要知道它的字节大小。 C ++无法闻到要写入的对象有多长。

如果您知道类型,只需使用sizeof运算符就可以将长度传递给您的函数。但请确保使用您的类型的sizeof而不是指向您的类型的指针的sizeof。即,如果您的对象类型为YourClass,请使用sizeof(YourClass),而不是sizeof(YourClass*)甚至sizeof(void*)