使用套接字通过TCP / IP发送数据并序列化数据

时间:2010-12-29 13:47:34

标签: c++ sockets

我必须通过带有套接字的TCP / IP发送一个格式为CHARINT,INT的字符串,其中CHAR是一个字符,INT是数字。发送和接收它们的最佳方式是哪种?当我收到它时,我怎么能把那个字符串拆分成两个整数呢?

1 个答案:

答案 0 :(得分:1)

有很多方法可以满足您的需求,而选择取决于您对解决方案的可扩展性。如果您只需要两个整数,那么您可以通过将它们放入数组“int arr [2];”来发送它们。并使用send(arr,2 * sizeof(int))调用来发送数据。收到数据时,你会做相反的事情。

序列化少量数据的简单但易于实现的方法是将数字转换为文本(使用itoa())并发送以逗号分隔的值列表。另一方面,您只需使用昏迷作为分隔符将其拆分,然后使用atoi()将值转换回int,即可解析字符串。

然而,对于任何更复杂的东西,你需要更灵活的方案。在此站点上搜索“序列化”以获取各种选项。任何通用方案都需要解析器,不重新发明轮子是有意义的。 ASN.1是用于序列化的通用二进制协议,广泛用于通信行业。