色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

socket傳輸字符串與其他類型的數據,有什么區別?

錢諍諍2年前17瀏覽0評論

這個問題點非常好。但問的不是很明確。

你肯定是想問socket傳輸數據時,接收方如何知道接收的是字符串還是二進制值。

一是靠事先約定的協議,一般用于控制中的數據傳輸;二是采用標準協議(如HTTP),用于互聯網。

如果沒有事先的約定,你無法確定接收到的數據是文本、圖像還是音頻或視頻。因此,必須事先約定Socket接收數據的格式。約定既可以采用標準協議(如HTTP),也可以用自己定義的協議。

以下通過我之前做的編程實類,分別說明:

事先約定協議:二進制與字符串事先寫好格式,與文件讀/寫一樣。

SOCKET傳輸字符串還是其它數據類型,由你在編程的send()函數中決定,其數據類型為void*,void *為“無類型指針”,void *可以指向任何類型的數據,也就是說可以用字符串,也可以用二進制的int,double等。

TCP/IP,UDP傳輸協議,用socket編程并創建socket關鍵字來實現網絡間的通信。

如下圖是windows的一個socket編程。

從其send,recv函數的格式看,與C/VC++的fread/fwrite()函數非常一致,只是把流換成socket套接字了:

HTTP客戶端請求:要復雜,必須按照HTTP標準協議做。

以客戶端為例。

客戶端發送一個HTTP請求到服務器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成,下圖給出了請求報文的一般格式。

編程實倒:

從上面看出,編程與windows,linux迥然不同。