bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

關(guān)于p2p服務(wù)端java代碼的信息

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

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

10年積累的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計制作后付款的網(wǎng)站建設(shè)流程,更有昆玉免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

步驟二:S將這些端口號傳回A和B

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

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

求javap2p聊天工具代碼

JAVA賀新態(tài)知年-自己動手做QQ(P2P聊天工具含源碼) - Dreamcode ~ ...

區(qū)襲閉答塊拍慧鏈中的消息傳播離不p2p通信 java實現(xiàn)一個簡單的p2p通信demo工具: idea jdk1.8 maven1 : idea新建maven項...

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

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

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

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

String msg = "Hello";?

選用專門為多播指定的D類IP地址(224.0.0.1到239.255.255.255),創(chuàng)建一個多播組?

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

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

MulticastSocket s = new MulticastSocket(6789);?

加入多播組?

s.joinGroup(group);?

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

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

group, 6789);?

發(fā)送?

s.send(hi);?

接收多播信息的步驟?

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

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

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

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

接收?

s.receive(recv);?

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

3.與已知IP和端口的端點通信?

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

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

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

 

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

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

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

用java多線程實現(xiàn)服務(wù)器與客戶端之間的文件傳輸?shù)拇a!!!急!!!!

程序分Server和Client

服務(wù)器端打開偵聽的端口,一有客戶端連衡昌接就創(chuàng)建兩個新的線程來負(fù)責(zé)這個連接

一個負(fù)責(zé)客戶端發(fā)送的信息(ClientMsgCollectThread 類),

另一個負(fù)責(zé)老攔薯通過該Socket發(fā)送數(shù)據(jù)(ServerMsgSendThread )

Server.java代碼如下:

/*

* 創(chuàng)建日期 2009-3-7

*

* TODO 要更改此生成的文件的模板,請轉(zhuǎn)至

* 窗口 - 首選項 - Java - 代碼樣式 - 代碼模板

*/

package faue.MutiUser;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java點虐 .ServerSocket;

import java點虐 .Socket;

/**

* 服務(wù)器端

*

* @author Faue

*/

public class Server extends ServerSocket {

private static final int SERVER_PORT = 10000;

/**

* 構(gòu)造方法,用于實現(xiàn)連接的監(jiān)聽

*

* @throws IOException

*/

public Server() throws IOException {

super(SERVER_PORT);

try {

while (true) {

Socket socket = super.accept();

new Thread(new ClientMsgCollectThread(socket), "getAndShow"

+ socket.getPort()).start();

new Thread(new ServerMsgSendThread(socket), "send"

+ socket.getPort()).start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws IOException {

new Server();

}

/**

* 該類用于創(chuàng)建接收客戶端發(fā)來的信息并顯示的線侍者程

*

* @author Faue

* @version 1.0.0

*/

class ClientMsgCollectThread implements Runnable {

private Socket client;

private BufferedReader in;

private StringBuffer inputStringBuffer = new StringBuffer("Hello");

/**

* 得到Socket的輸入流

*

* @param s

* @throws IOException

*/

public ClientMsgCollectThread(Socket s) throws IOException {

client = s;

in = new BufferedReader(new InputStreamReader(client

.getInputStream(), "GBK"));

}

public void run() {

try {

while (!client.isClosed()) {

inputStringBuffer.delete(0, inputStringBuffer.length());

inputStringBuffer.append(in.readLine());

System.out.println(getMsg(inputStringBuffer.toString()));

}

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

}

}

/**

* 構(gòu)造顯示的字符串

*

* @param line

* @return

*/

private String getMsg(String line) {

return client.toString() + " says:" + line;

}

}

/**

* 該類用于創(chuàng)建發(fā)送數(shù)據(jù)的線程

*

* @author Faue

* @version 1.0.0

*/

class ServerMsgSendThread implements Runnable {

private Socket client;

private PrintWriter out;

private BufferedReader keyboardInput;

private StringBuffer outputStringBuffer = new StringBuffer("Hello");

/**

* 得到鍵盤的輸入流

*

* @param s

* @throws IOException

*/

public ServerMsgSendThread(Socket s) throws IOException {

client = s;

out = new PrintWriter(client.getOutputStream(), true);

keyboardInput = new BufferedReader(new InputStreamReader(System.in));

}

public void run() {

try {

while (!client.isClosed()) {

outputStringBuffer.delete(0, outputStringBuffer.length());

outputStringBuffer.append(keyboardInput.readLine());

out.println(outputStringBuffer.toString());

}

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

}

}

}

}

客戶端:

實現(xiàn)基于IP地址的連接,連接后也創(chuàng)建兩個線程來實現(xiàn)信息的發(fā)送和接收

/*

* 創(chuàng)建日期 2009-3-7

*

*/

package faue.MutiUser;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java點虐 .Socket;

/**

* 客戶端

*

* @author Faue

*/

public class Client {

private Socket mySocket;

/**

* 創(chuàng)建線程的構(gòu)造方法

*

* @param IP

* @throws IOException

*/

public Client(String IP) throws IOException {

try {

mySocket = new Socket(IP, 10000);

new Thread(new ServerMsgCollectThread(mySocket), "getAndShow"

+ mySocket.getPort()).start();

new Thread(new ClientMsgSendThread(mySocket), "send"

+ mySocket.getPort()).start();

} catch (IOException e) {

//e.printStackTrace();

System.out.println("Server.IP:" + IP

+ " port:10000 can not be Connected");

}

}

public static void main(String[] args) throws IOException {

try {

new Client(args[0]);

} catch (Exception e) {

System.out.println("輸入的IP地址錯誤");

}

}

/**

* 該類用于創(chuàng)建接收服務(wù)端發(fā)來的信息并顯示的線程

*

* @author Faue

* @version 1.0.0

*/

class ServerMsgCollectThread implements Runnable {

private Socket client;

private BufferedReader in;

private StringBuffer inputStringBuffer = new StringBuffer("Hello");

/**

* 得到Socket的輸入流

*

* @param s

* @throws IOException

*/

public ServerMsgCollectThread(Socket s) throws IOException {

client = s;

in = new BufferedReader(new InputStreamReader(client

.getInputStream(), "GBK"));

}

public void run() {

try {

while (!client.isClosed()) {

inputStringBuffer.delete(0, inputStringBuffer.length());

inputStringBuffer.append(in.readLine());

System.out.println(getMsg(inputStringBuffer.toString()));

}

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

System.exit(0);

}

}

/**

* 構(gòu)造輸入字符串

*

* @param line

* @return

*/

private String getMsg(String line) {

return client.toString() + " says:" + line;

}

}

/**

* 該類用于創(chuàng)建發(fā)送數(shù)據(jù)的線程

*

* @author Faue

* @version 1.0.0

*/

class ClientMsgSendThread implements Runnable {

private Socket client;

private PrintWriter out;

private BufferedReader keyboardInput;

private StringBuffer outputStringBuffer = new StringBuffer("Hello");

/**

* 得到鍵盤的輸入流

*

* @param s

* @throws IOException

*/

public ClientMsgSendThread(Socket s) throws IOException {

client = s;

out = new PrintWriter(client.getOutputStream(), true);

keyboardInput = new BufferedReader(new InputStreamReader(System.in));

}

public void run() {

try {

while (!client.isClosed()) {

outputStringBuffer.delete(0, outputStringBuffer.length());

outputStringBuffer.append(keyboardInput.readLine());

out.println(outputStringBuffer.toString());

}

out.println("--- See you, bye! ---");

} catch (IOException e) {

//e.printStackTrace();

System.out.println(client.toString() + " is closed!");

System.exit(0);

}

}

}

}

如果對您有幫助,請記得采納為滿意答案,謝謝!祝您生活愉快!

vaela

文章題目:關(guān)于p2p服務(wù)端java代碼的信息
本文路徑:http://vcdvsql.cn/article4/ddpspoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作手機網(wǎng)站建設(shè)用戶體驗自適應(yīng)網(wǎng)站網(wǎng)站制作搜索引擎優(yōu)化

廣告

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

成都網(wǎng)頁設(shè)計公司