我经由使用SENDTO和recvfrom的功能Winsock的交换数据,但在每个第二参数是的char * buf中。我想发送一个自定义数据,如MyStruct *,但我无法找到这些功能的类似物与void *一起使用。我只是害怕,以字符串格式发送数据,然后解析它可能是缓慢和无效的。但是,也许有强有力的理由迫使程序员以这种方式发送数据?欢迎任何关于情况和任何建议的信息。提前致谢。如何使用winsock(C++)发送 recv非char数据?
3
A
回答
3
如果您struct
不不包含任何指针或手柄和接收器是由你使用相同的编译器和编译标志写的,你不关心可移植性(如big-endian体系结构),那么你可以投你的MyStruct*
到char*
,它会工作。
在其他情况下,你将死于一次可怕的死亡。不,认真。它不会工作。指针和句柄在另一台机器上没有意义,并且使用不同的编译器或编译标志可能会导致struct
具有稍微不同的布局或填充,使其无法使用。
通常通过网络发送结构,除极少数情况外,需要serialization。
4
相关问题
- 1. C++ Winsock结构发送/ recv
- 2. C++ Winsock发送文件
- 3. C++ Winsock recv hook Detours
- 4. Winsock发送recv缓冲区大小
- 5. 我可以使用Winsock发送非IP数据包吗?
- 6. 发送数据的Winsock问题C++
- 7. 如何从使用winsock从套接字recv的函数返回char?
- 8. 使用Winsock发送/接收HMODULE
- 9. 使用winsock发送结构
- 10. 如何发送和recv特定字符的Winsock
- 11. C++ Winsock recv不会阻塞
- 12. recv函数如何工作-winsock函数
- 13. 多Winsock发送数据
- 14. Winsock recv hooking Detours
- 15. 如何发送C++ winsock获取请求?
- 16. 发送()到特定客户端C WInSock
- 17. Winsock recv()没有收到任何数据(C)
- 18. winsock recv()重复/缺少数据
- 19. Winsock recv()返回不正确的数据
- 20. 在C++中的Winsock中发送HTTP GET请求后,Recv()函数挂起
- 21. Winsock发送函数
- 22. 如何接收来自recv winsock函数的二进制数据
- 23. Winsock发送呼叫很慢
- 24. Winsock发送功能不发送
- 25. 如何使用winsock的send()函数发送宽字符?
- 26. MPI非阻塞发送/ recv的
- 27. Python发送/ recv二进制数据
- 28. 的Winsock发送额外的数据
- 29. 通过winsock发送位图数据? Winapi
- 30. winsock多IP发送数据vb6
非常感谢,达蒙。我确实计划可移植性,所以谢谢你让我知道序列化吧。要去挖掘它并试图弄清楚序列化\反序列化是否会减慢应用程序的运行速度。 – JacksonRR
它是否减慢应用程序并不重要 - 它必须工作。如果它不起作用,即使速度很快也没用。当需要序列化时,这是必要的。在重新发明轮子之前,请查看[protocol buffers](http://code.google.com/p/protobuf/)或[msgpack](http://msgpack.org/)是否可以接受。它们相当快速和高效,并且使用已有的工具可以节省数周/数月的时间。 – Damon