本文目錄一覽:
- 1、基於java的p2p實現文件共享和傳輸
- 2、如何使用java實現tcp的p2p的打洞技術
- 3、我想問下現在是不是都用的是JAVA語言來做P2P貸款平台開發啊?有什麼好處?
- 4、p2p網貸平台系統都是用什麼語言開發的?熟知的語言有C++,java.
- 5、p2p 用JAVA寫好,還是用VC++好?
基於java的p2p實現文件共享和傳輸
在JAVA中,發送和接收多播信息的方法:
發送多播信息需經歷步驟
確定發送的具體信息內容
String msg = “Hello”;
選用專門為多播指定的D類IP地址(224.0.0.1到239.255.255.255),創建一個多播組
InetAddress group = InetAddress.getByName(“228.5.6.7”);
使用指定的埠(一般選1024以上的埠號)建立多播套接字
MulticastSocket s = new MulticastSocket(6789);
加入多播組
s.joinGroup(group);
創建一個數據報封裝多播信息
DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(),
group, 6789);
發送
s.send(hi);
接收多播信息的步驟
開闢接收緩衝區
byte[] buf = new byte[1000];
創建接收數據報
DatagramPacket recv = new DatagramPacket(buf, buf.length);
接收
s.receive(recv);
注意:以上發送和接收程序在同一個文件中實現,若在不同文件中實現則應分別定義多播套接字並加入多播組。
3.與已知IP和埠的端點通信
在互聯網上主要採用TCP和UDP來實現兩點之間的通信。採用TCP可可靠傳送信息,但花費時間較多;採用UDP可快速傳遞信息,但不能保證可靠傳遞。
JAVA實現TCP通信的方法 :
利用Socket(InetAddress addr, int port)和 Socket(String host, int port),創建客戶端套接字,利用ServerSocket(int port)創建伺服器端套接字,port埠就是伺服器監聽連接請求的埠,通過調用accept()返回一個最近創建的Socket對象,該Socket對象綁定了客戶程序的IP地址或埠號。通過調用Socket的 getInputStream()方法獲得輸入流讀傳送來的信息,也可能通過調用Socket的 getOutputStream()方法獲得輸出流來發送消息。
JAVA實現UDP通信的方法 :
使用DatagramPacket(byte [] buffer, int length, InetAddress addr, int port) 確定數據包數組、數組的長度、數據包的地址和埠信息。使用DatagramSocket()創建客戶端套接字,而伺服器端則採用DatagramSocket(int port),調用send(DatagramPacket dgp)和 receive(DatagramPacket dgp)來發送和接收數據包。本文設計的程序採用UDP。
P2P(Peer-to-Peer 端到端)模型是與C/S(客戶/伺服器)模型相對應。基於C/S的用戶間通信需要由伺服器中轉,在C/S中的伺服器故障將導致整個網路通信的癱瘓。。而基於P2P的用戶間通信則是直接通信,去掉了伺服器這一層,帶來的顯著優點是通信時沒有單一的失敗點,一個用戶的故障不會影響整個P2P網路。本文提供了一種用JAVA實現P2P網路通信的方法。
如何使用java實現tcp的p2p的打洞技術
建立穿越NAT設備的p2p的TCP連接只比UDP複雜一點點,TCP協議的”打洞”從協議層來看是與UDP的”打洞”過程非常相似的。儘管如此,基於TCP協議的打洞至今為止還沒有被很好的理解,這也造成了對其提供支持的NAT設備不是很多。在NAT設備支持的前提下,基於TCP的”打洞”技術實際上與基於UDP的”打洞”技術一樣快捷、可靠。實際上,只要NAT設備支持的話,基於TCP的p2p技術的健壯性將比基於UDP的技術的更強一些,因為TCP協議的狀態機給出了一種標準的方法來精確的獲取某個TCP session的生命期,而UDP協議則無法做到這一點。
一. 套接字和TCP埠的重用
實現基於TCP協議的p2p”打洞”過程中,最主要的問題不是來自於TCP協議,而是來自於來自於應用程序的API介面。這是由於標準的伯克利(Berkeley)套接字的API是圍繞著構建客戶端/伺服器程序而設計的,API允許TCP流套接字通過調用connect()函數來建立向外的連接,或者通過listen()和accept函數接受來自外部的連接,但是,API不提供類似UDP那樣的,同一個埠既可以向外連接,又能夠接受來自外部的連接。而且更糟的是,TCP的套接字通常僅允許建立1對1的響應,即應用程序在將一個套接字綁定到本地的一個埠以後,任何試圖將第二個套接字綁定到該埠的操作都會失敗。
為了讓TCP”打洞”能夠順利工作,我們需要使用一個本地的TCP埠來監聽來自外部的TCP連接,同時建立多個向外的TCP連接。幸運的是,所有的主流操作系統都能夠支持特殊的TCP套接字參數,通常叫做”SO_REUSEADDR”,該參數允許應用程序將多個套接字綁定到本地的一個endpoint(只要所有要綁定的套接字都設置了SO_REUSEADDR參數即可)。BSD系統引入了SO_REUSEPORT參數,該參數用於區分埠重用還是地址重用,在這樣的系統裡面,上述所有的參數必須都設置才行。
我想問下現在是不是都用的是JAVA語言來做P2P貸款平台開發啊?有什麼好處?
當然也有其它語言,只是用java的比較多,比如迪蒙網貸系統,大部分用的是java語言開發的系統,安全無漏洞;Java主要用於網路應用程序開發(網站建設等),因此對安全性有較高的要求,Java通過自己的安全機制防止了病毒程序的產生和下載程序對本地系統的威脅破壞。做P2P對安全性要求高,所以大部分用的是java語言。
p2p網貸平台系統都是用什麼語言開發的?熟知的語言有C++,java.
網貸系統一般有java版、PHP版、第三方資金託管版、定製版,後兩種其實都是用java和PHP語言做的,不過是根據客戶需要增加了功能。一般的話用的比較多的還是java版,但是PHP版開發速度會更快一些。雄貓軟體做的P2P網貸系統就有java3.0版、PHP3.0版、第三方資金託管版、定製版,案例近百家,業內口碑很好。
再看看別人怎麼說的。
p2p 用JAVA寫好,還是用VC++好?
建議C++。因為跨平台的關係,java無法去過細的去實現底層的細節。而Java虛擬機也未能覆蓋那麼多範圍——雖然這種情況可能會最終有所改觀,但總體當前實現有可能性不大。
C++是實現這類程序的再方便不過的工具。相關的API都是用C寫的,使用起來很方便。
如果一定要用Java,可以參看SUN公司在2000年就推出了JXTA,該技術的目的是為P2P的網路應用開發提供一個統一的平台,而且為了鼓勵和支持該技術的發展,JXTA項目採用了開放源碼的方式,因此吸引了大量業界人士參與到JXTA技術的研究與應用當中,你可以從這方面入手來查找資料。
原創文章,作者:LVQ3A,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127393.html