用Socket實現點對點的檔案傳輸

2021-04-17 00:59:00 字數 1671 閱讀 6098

socket

實現點對點的檔案傳輸

system.sockes命名空間了實現berkeley 套接字介面。通過這個類,我們可以實現網路計算機之間的訊息傳輸和傳送.而在我下面要討論的這個議題裡,我們將討論的是用套節子實現檔案的傳輸.這種方法有別於ftp協議實現的的檔案傳輸方法,利用ftp的方法需要乙個專門的伺服器和客戶端,無疑於我們要實現的點對點的檔案傳輸太為複雜了一些。在這裡,我們實現乙個輕量級的方法來實現點對點的檔案傳輸,這樣就達到了intenet上任何兩個計算機的檔案共享。

在兩台計算機傳輸檔案之前,必需得先有一台計算機建立套節子連線並繫結乙個固定得埠,並在這個埠偵聽另外一台計算機的連線請求。

socket = new socket(addressfamily.internetwork,sockettype.stream, protocoltype.tcp);

socket.blocking = true ;

ipendpoint computernode1 = new ipendpoint(serveripadress, 8080);

socket.bind(computernode1);

socket.listen(-1);

當有其他的計算機發出連線請求的時候,被請求的計算機將對每乙個連線請求分配乙個執行緒,用於處理檔案傳輸和其他服務。

while ( true )

}

下面的**展示了listenclient方法是如何處理另外一台計算機傳送過來的請求。首先並對傳送過來的請求字串作出判斷,看看是何種請求,然後決定相應的處理方法。

void listenclient()

//檔案傳輸

if ( execmd == "getok" )

}

}

catch(exception se)

}

至此,基本的工作已經完成了,下面我們看看如何處理檔案傳輸的。

while(rdby < total && nfs.canwrite)

從上面的**可以看出是完成檔案轉換成filestream流,然後通過networkstream繫結對應的套節子,最後呼叫他的write方法傳送到對應的計算機。

我們再看看接受端是如何接受傳輸過來的流,並且轉換成檔案的:

networkstream nfs = new networkstream(sock) ;

try

fout.close() ;

從上面可以看出接受與傳送恰好是互為相反的過程,非常簡單。

至此,單方向的檔案傳輸就完成了,只需要在每個對等的節點上同時實現上面的傳送和接受的處理**就可以做到互相傳輸檔案了。

用Socket實現點對點的檔案傳輸

用socket實現點對點的檔案傳輸 system.sockes命名空間了實現 berkeley 套接字介面。通過這個類,我們可以實現網路計算機之間的訊息傳輸和傳送.而在我下面要討論的這個議題裡,我們將討論的是用套節子實現檔案的傳輸.這種方法有別於ftp協議實現的的檔案傳輸方法,利用ftp的方法需要乙...

用Socket實現點對點的檔案傳輸

system.sockes命名空間了實現 berkeley 套接字介面。通過這個類,我們可以實現網路計算機之間的訊息傳輸和傳送。而在我下面要討論的這個議題裡,我們將討論的是用套接字實現檔案的傳輸.這種方法有別於ftp協議實現的的檔案傳輸方法,利用ftp的方法需要乙個專門的伺服器和客戶端,無疑於我們要...

用Socket實現點對點的檔案傳輸

system.sockes命名空間了實現berkeley 套接字介面。通過這個類,我們可以實現網路計算機之間的訊息傳輸和傳送.而在我下面要討論的這個議題裡,我們將討論的是用套節子實現檔案的傳輸.這種方法有別於ftp協議實現的的檔案傳輸方法,利用ftp的方法需要乙個專門的伺服器和客戶端,無疑於我們要實...