當前位置:首頁 » 文件管理 » socket壓縮

socket壓縮

發布時間: 2024-06-07 00:26:08

⑴ 如何在Windows環境下的VS中安裝使用Google Protobuf完成SOCKET通信

1.下載protobuff,我下的是2.3.0版本
最新的protobuf可以到Google Code上下載:http://code.google.com/p/protobuf/downloads/list
當前版本為2.3.0,下載兩個壓縮包:protoc-2.3.0-win32.zip和protobuf-2.3.0.zip,前者是protobuf的編譯器,後者包含了有三程序語言的開發包。

2.解壓
首先解壓protoc-2.3.0-win32.zip,把protoc.exe文件放到path路徑中,最簡單的做法就是把這個文件拷貝到C:/WINDOWS目錄下。
解壓protobuf-2.3.0.zip文件,將文件加壓到C盤根目錄,主文件位於C:/protobuf-2.3.0/protobuf-2.3.0目錄下。

3.安裝操作
(1)使用VS2005編譯proto,VS工程目錄位於vsprojects目錄中,工程名字為「protobuf.sln」。

(2)選擇「生成」à「生成解決方案」選項進行編譯,編譯過程中可能會由於編譯的順序報錯誤,可以使用手工逐個順序編譯生成,可能會比較順利。按照下圖的順序,右鍵「重新生成」,逐個編譯。但是我在實習操作過程中,libprotobuf-lite工程重來都沒有成功編譯通過過。淡定先,這個不會影響大局的。

(3)編譯完成會在目錄vsprojects下的Debug目錄中生成lib和exe文件。
生成清單如下:
exe文件:
2010-04-15 09:51 950,272 lite-test.exe
2010-04-15 09:50 3,219,456 protoc.exe
2010-04-15 09:48 9,228,288 tests.exe
2010-04-15 09:56 2,519,040 test_plugin.exe

lib文件:
2010-04-15 09:50 2,685,922 libprotobuf-lite.lib
2010-04-15 09:56 24,100,794 libprotobuf.lib
2010-04-15 09:56 17,302,068 libprotoc.lib
其實我在測試過程中,lite-test.exe和libprotobuf-lite.lib並沒有生成,因為編譯錯誤了,但這並不影響大局,淡定先。

(4)OK,至此,我們已經完成了編譯工作,下面需要進行的是protobuf的測試。我們需要使用到之前VS編譯出來的libprotobuf.lib和libprotoc.lib完成一個C/S結構的SOCKET通信測試。

àProtobuf的測試
在VS2005下,創建兩個新的工程,分別命名為server和client,每個工程都需要引用protobuf的頭文件和lib文件。
一、添加protobuf頭文件操作:右擊項目à屬性à配置屬性àC/C++à常規 (也命令行可在中添加)。具體路徑:C:/protobuf-2.3.0/protobuf-2.3.0/src
二、添加protobuf的lib文件操作:右擊項目à屬性à配置屬性à鏈接器à常規(也可在命令行中添加)。具體路徑:C:/protobuf-2.3.0/protobuf-2.3.0/vsprojects/Debug
三、CMD窗口下編譯生成頭文件:
C:/protobuf-2.3.0/protobuf-2.3.0/examples>protoc -I=./ --cpp_out=./ people.proto
將proto文件生成的文件放到當前目錄。

⑵ 什麼是java socket

事實上網路編程簡單的理解就是兩台計算機相互通訊數據而已,對於程序員而言,去掌握一種編程介面並使用一種編程模型相對就會顯得簡單的多了,Java SDK提供一些相對簡單的Api來完成這些工作。Socket就是其中之一,對於Java而言,這些Api存在與java.net 這個包裡面,因此只要導入這個包就可以准備網路編程了。

網路編程的基本模型就是客戶機到伺服器模型,簡單的說就是兩個進程之間相互通訊,然後其中一個必須提供一個固定的位置,而另一個則只需要知道這個固定的位置。並去建立兩者之間的聯系,然後完成數據的通訊就可以了,這里提供固定位置的通常稱為伺服器,而建立聯系的通常叫做客戶端,基於這個簡單的模型,就可以進入網路編程啦。

Java對這個模型的支持有很多種Api,而這里我只想介紹有關Socket的編程介面,對於Java而言已經簡化了Socket的編程介面。首先我們來討論有關提供固定位置的服務方是如何建立的。Java提供了ServerSocket來對其進行支持.事實上當你創建該類的一個實力對象並提供一個埠資源你就建立了一個固定位置可以讓其他計算機來訪問你,ServerSocket server=new ServerSocket(6789);這里稍微要注意的是埠的分配必須是唯一的。因為埠是為了唯一標識每台計算機唯一服務的,另外埠號是從0~65535之間的,前1024個埠已經被Tcp/Ip 作為保留埠,因此你所分配的埠只能是1024個之後的。好了,我們有了固定位置.現在所需要的就是一根連接線了.該連接線由客戶方首先提出要求。因此Java同樣提供了一個Socket對象來對其進行支持,只要客戶方創建一個Socket的實例對象進行支持就可以了。Socket client
=new Socket(InetAddress.getLocalHost(),5678);客戶機必須知道有關伺服器的IP地址,對於著一點Java也提供了一個相關的類InetAddress 該對象的實例必須通過它的靜態方法來提供,它的靜態方法主要提供了得到本機IP 和通過名字或IP直接得到InetAddress的方法。

上面的方法基本可以建立一條連線讓兩台計算機相互交流了,可是數據是如何傳輸的呢?事實上I/O操作總是和網路編程息息相關的。因為底層的網路是繼續數據的,除非遠程調用,處理問題的核心在執行上,否則數據的交互還是依賴於IO操作的,所以你也必須導入java.io這個包.java的IO操作也不復雜,它提供了針對於位元組流和Unicode的讀者和寫者,然後也提供了一個緩沖用於數據的讀寫。

在網路搜索里輸入java socket會有N多的結果給你答案。

⑶ java socket如何實現一次傳送多個文件

很簡單,就是把多個文件「變成」一個文件傳送就可以了,每個文件都是一個流,把這些流輸入到一個流中合並流傳輸即可,這個是基本思路。實現差不多以下兩個方法
1、直接流拼接,循環要傳輸的文件列表,多個InputStream,然後輸出到一個OutputStream,這個out就是發送數據的埠,為了接收端能夠識別每個文件從而分割流,需要每個流中結尾添加分隔符。其實這就是HTTP文件上傳的做法。
2、就比較簡單了,職業使用ZIP工具包吧需要傳輸的多文件壓縮成一個文件傳輸,接收端直接解壓縮就完事。
需要注意的是,發送多文件上傳你需要提取計算好總傳輸量位元組大小放在傳輸報文頭部告訴接收端你要發送的數據有多大,不然接收端可能無法完整接收數據。

熱點內容
抗震柱加密區 發布:2025-01-17 03:03:06 瀏覽:134
幼兒園源碼php 發布:2025-01-17 02:41:45 瀏覽:401
win引導Linux 發布:2025-01-17 02:36:49 瀏覽:263
ftp是傳輸類協議嗎 發布:2025-01-17 02:36:47 瀏覽:311
查看電視配置下載什麼軟體 發布:2025-01-17 02:36:41 瀏覽:159
寶馬x330i比28i多哪些配置 發布:2025-01-17 02:35:59 瀏覽:573
伺服器運維安全雲幫手 發布:2025-01-17 02:35:48 瀏覽:72
c應用編程 發布:2025-01-17 02:35:16 瀏覽:941
ios清除app緩存數據免費 發布:2025-01-17 02:34:33 瀏覽:375
微信企業號上傳文件 發布:2025-01-17 02:10:28 瀏覽:64