我开发了以下C代码来屏蔽数据,然后再发送回Web服务器客户端,这是使用RFC 6455协议在Firefox浏览器上运行的java脚本。 但是我遇到了问题,因为我无法在客户端看到任何内容。 有人说,从服务器发送到客户端时不必屏蔽数据。真的吗 ?我无法看到我的情况。 如果我的问题在某处不明确,请告诉我。 谢谢你的帮助。
char frame[131],message[360];
strcpy(message,"Server here !");
frame[0] = '\x81';
frame[1] = 128 + strlen(message);
frame[2] = '\x00';
frame[3] = '\x00';
frame[4] = '\x00';
frame[5] = '\x00';
snprintf(frame+6, 124, "%s", message);
printf("%s", frame);
n = write(newsockfd, frame, strlen(frame));
答案 0 :(得分:1)
不要使用strlen
函数来获取除C风格字符串之外的任何内容的长度。您的框架不是C风格的字符串。框架的长度为6 + strlen(message)
,而不是strlen(frame)
。
这也是printf("%s", frame);
无效的原因。 %s
格式说明符用于C样式字符串,而您的帧不是。
这假设您的消息是C风格的字符串。如果没有,那么您有其他错误,因为您使用strlen
在frame[1]
的初始值设定项中计算其长度。
答案 1 :(得分:1)
由于嵌入的空值,strlen()不给出帧的长度。将消息长度添加到帧前缀长度。但掩蔽在哪里?
答案 2 :(得分:0)