關(guān)于p2p項(xiàng)目java代碼的信息

bt這樣的p2p軟件用什么語(yǔ)言編啊,vc++?java?

我也對(duì)p2p比較感興趣,只是沒(méi)有C++基礎(chǔ),現(xiàn)在正在打算開(kāi)發(fā)一個(gè)p2p的軟件,學(xué)習(xí)中。

成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供澄城企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為澄城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

很多都是用VC++開(kāi)發(fā)的,這個(gè)網(wǎng)站有提供一個(gè)BT開(kāi)發(fā)接口:

你還可以下載到bt開(kāi)發(fā)的很多開(kāi)源代碼。

你可以上網(wǎng)搜索一下其它的源碼。

參考文章:

廣域網(wǎng)實(shí)現(xiàn)p2p文件傳輸 如何實(shí)現(xiàn)nat穿透 求java或C++源代碼

假設(shè)有兩臺(tái)分別處于各自的私有網(wǎng)絡(luò)中的主機(jī):A和B;N1和N2是兩個(gè)NAT設(shè)備;S是一個(gè)使用了一個(gè)眾所周知的、從全球任何地方都能訪(fǎng)問(wèn)得到的IP地址的公共服務(wù)器

步驟一:A和B分別和S建立UDP連接;NAT設(shè)備N(xiāo)1和N2創(chuàng)建UDP轉(zhuǎn)換狀態(tài)并分配臨時(shí)的外部端口號(hào)

步驟二:S將這些端口號(hào)傳回A和B

步驟三:A和B通過(guò)轉(zhuǎn)換好的端口直接聯(lián)系到對(duì)方的NAT設(shè)備;NAT設(shè)備則利用先前創(chuàng)建的轉(zhuǎn)換狀態(tài)將分組發(fā)往A和B

源碼已發(fā)送請(qǐng)查收

java p2p通信編程

p2p是一種基于TCP/IP的一個(gè)上層文件傳輸協(xié)議。應(yīng)該不是你想要的。

要實(shí)現(xiàn)廣域網(wǎng)中的雙端通信。你肯定不能把對(duì)方的ip地址寫(xiě)死在程序里,必然要有一套發(fā)現(xiàn)機(jī)制。

要么就是以服務(wù)器為中心,大家把消息發(fā)給中心服務(wù)器,有服務(wù)器再轉(zhuǎn)發(fā)給對(duì)方,就像發(fā)送郵件的SMTP。

現(xiàn)在即時(shí)通信的一些開(kāi)源協(xié)議有一些,但不管基于什么原理實(shí)現(xiàn),都少不了要有一臺(tái)中央服務(wù)器做協(xié)助,不過(guò)估計(jì)你用不到太復(fù)雜的。簡(jiǎn)單實(shí)現(xiàn)就可以了。

基于java的p2p實(shí)現(xiàn)文件共享和傳輸

在JAVA中,發(fā)送和接收多播信息的方法:?

發(fā)送多播信息需經(jīng)歷步驟?

確定發(fā)送的具體信息內(nèi)容?

String msg = "Hello";?

選用專(zhuān)門(mén)為多播指定的D類(lèi)IP地址(224.0.0.1到239.255.255.255),創(chuàng)建一個(gè)多播組?

InetAddress group = InetAddress.getByName("228.5.6.7");?

使用指定的端口(一般選1024以上的端口號(hào))建立多播套接字?

MulticastSocket s = new MulticastSocket(6789);?

加入多播組?

s.joinGroup(group);?

創(chuàng)建一個(gè)數(shù)據(jù)報(bào)封裝多播信息?

DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),?

group, 6789);?

發(fā)送?

s.send(hi);?

接收多播信息的步驟?

開(kāi)辟接收緩沖區(qū)?

byte[] buf = new byte[1000];?

創(chuàng)建接收數(shù)據(jù)報(bào)?

DatagramPacket recv = new DatagramPacket(buf, buf.length);?

接收?

s.receive(recv);?

注意:以上發(fā)送和接收程序在同一個(gè)文件中實(shí)現(xiàn),若在不同文件中實(shí)現(xiàn)則應(yīng)分別定義多播套接字并加入多播組。?

3.與已知IP和端口的端點(diǎn)通信?

在互聯(lián)網(wǎng)上主要采用TCP和UDP來(lái)實(shí)現(xiàn)兩點(diǎn)之間的通信。采用TCP可可靠傳送信息,但花費(fèi)時(shí)間較多;采用UDP可快速傳遞信息,但不能保證可靠傳遞。

JAVA實(shí)現(xiàn)TCP通信的方法 :

利用Socket(InetAddress addr, int port)和 Socket(String host, int port),創(chuàng)建客戶(hù)端套接字,利用ServerSocket(int port)創(chuàng)建服務(wù)器端套接字,port端口就是服務(wù)器監(jiān)聽(tīng)連接請(qǐng)求的端口,通過(guò)調(diào)用accept()返回一個(gè)最近創(chuàng)建的Socket對(duì)象,該Socket對(duì)象綁定了客戶(hù)程序的IP地址或端口號(hào)。通過(guò)調(diào)用Socket的 getInputStream()方法獲得輸入流讀傳送來(lái)的信息,也可能通過(guò)調(diào)用Socket的 getOutputStream()方法獲得輸出流來(lái)發(fā)送消息。?

 

JAVA實(shí)現(xiàn)UDP通信的方法 :

使用DatagramPacket(byte [] buffer, int length, InetAddress addr, int port) 確定數(shù)據(jù)包數(shù)組、數(shù)組的長(zhǎng)度、數(shù)據(jù)包的地址和端口信息。使用DatagramSocket()創(chuàng)建客戶(hù)端套接字,而服務(wù)器端則采用DatagramSocket(int port),調(diào)用send(DatagramPacket dgp)和 receive(DatagramPacket dgp)來(lái)發(fā)送和接收數(shù)據(jù)包。本文設(shè)計(jì)的程序采用UDP。

P2P(Peer-to-Peer 端到端)模型是與C/S(客戶(hù)/服務(wù)器)模型相對(duì)應(yīng)。基于C/S的用戶(hù)間通信需要由服務(wù)器中轉(zhuǎn),在C/S中的服務(wù)器故障將導(dǎo)致整個(gè)網(wǎng)絡(luò)通信的癱瘓。。而基于P2P的用戶(hù)間通信則是直接通信,去掉了服務(wù)器這一層,帶來(lái)的顯著優(yōu)點(diǎn)是通信時(shí)沒(méi)有單一的失敗點(diǎn),一個(gè)用戶(hù)的故障不會(huì)影響整個(gè)P2P網(wǎng)絡(luò)。本文提供了一種用JAVA實(shí)現(xiàn)P2P網(wǎng)絡(luò)通信的方法。  ?

本文題目:關(guān)于p2p項(xiàng)目java代碼的信息
標(biāo)題URL:http://muchs.cn/article12/doccidc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、網(wǎng)站收錄網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)