我想使用以下命令通过网络连接将 JSON 消息从 PHP 脚本发送到 C# 应用程序PHP 套接字 http://php.net/manual/en/book.sockets.php.
通常,对于二进制协议, https://stackoverflow.com/a/5421923/586084每个消息的前 4 个字节必须是一个整数,表示消息的长度(多少字节)。
在 C# 中,我为每条消息添加一个整数前缀,该整数表示消息的长度,如下所示:
byte[] msgBytes = UTF8Encoding.UTF8.GetBytes("A JSON msg");
byte[] prefixBytes = BitConverter.GetBytes(msgBytes.Length);
byte[] msgToSend = new byte[prefixBytes.Length + msgBytes.Length];
Buffer.BlockCopy(prefixBytes, 0, msgToSend, 0, prefixBytes.Length);
Buffer.BlockCopy(msgBytes, 0, msgToSend, prefixBytes.Length, msgBytes.Length);
据我了解,在 PHP 中该函数套接字发送 http://www.php.net/manual/en/function.socket-send.php只接受字符串。那么,如何在 PHP 5.x 中执行相同的前缀呢?
Update:我发布了一个后续问题 https://stackoverflow.com/questions/9746661/process-socket-data-with-a-leading-length-value关于从网络套接字接收到此类前缀数据时如何处理。