所以我嘗試使用sendto()函數向客戶端發送消息。在sendto()函數中發送一個結構 - C語言
和sendto()函數的原型是這樣的:
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
但我想送一個結構作爲第二個參數。我能做到嗎?或者buf必須是一個字符串?
編輯:你看,我都能夠發送這樣的:
「的消息由‘標題’,其次是‘有效載荷’
你的消息頭應該包括以下內容:
uint8_t version; /* must be 1. If you receive anything else, discard*/
uint8_t ttl; /* must be 1. If you receive anything else, discard*/
uint16_t payload_length; /* bytes following the header */
uint32_t account_identifier; /* digits of your account name */
uint32_t source_address; /* unused for now, set to 0 and ignore. */
uint32_t destination_address; /* unused for now, set to 0 and ignore. */
uint16_t checksum; /* unused for now, set to 0 and ignore. */
uint16_t protocol; /* must be 1. If you receive anything else, discard*/"
和有效載荷是一個文本字符串,如「你好」之類的。
我覺得像我送頭將發送所有的結構的唯一方式信息。對?
雅互操作性不成問題。服務器的硬件是一樣的。 – umdcoder 2014-10-19 21:01:15
帶指針的結構體是否也能發送? – umdcoder 2014-10-19 21:01:41
@umdcoder不,它不是。一般來說,發送結構是一個糟糕的主意。不要使用結構作爲網絡協議。使用網絡協議作爲網絡協議。 – EJP 2014-10-19 21:04:21