簡體   English   中英

將屏蔽數據從Web套接字服務器發送到Web套接字客戶端

[英]Sending masked data from web socket server to web socket client

在開發回Web服務器客戶端之前,我開發了以下C代碼來屏蔽數據,這是使用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));

不要使用strlen函數來獲取除C風格字符串之外的任何內容的長度。 您的框架不是C風格的字符串。 幀的長度是6 + strlen(message) ,而不是strlen(frame)

這也是printf("%s", frame); 沒用。 %s格式說明符用於C樣式字符串,而您的幀不是。

這假設您的消息是C風格的字符串。 如果沒有,你有其他錯誤,因為你使用strlen來計算frame[1]的初始化程序中的長度。

由於嵌入的空值,strlen()不給出幀的長度。 將消息長度添加到幀前綴長度。 但掩蔽在哪里?

我想知道你為什么要屏蔽發送給客戶端的幀?

RFC 6455說明如下:

服務器不得屏蔽它發送給客戶端的任何幀。 如果客戶端檢測到屏蔽幀,則必須關閉連接。

有關詳細信息,請查看第5.1節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM