基于java的p2p实现文件共享和传输

基于java的p2p实现文件共享和传输,第1张

在JAVA中,发送和接收多播信息的方法: 

发送多播信息需经历步骤 

确定发送的具体信息内容 

String msg = "Hello"; 

选用专门为多播指定的D类IP地址(224001到239255255255),创建一个多播组 

InetAddress group = InetAddressgetByName("228567"); 

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

MulticastSocket s = new MulticastSocket(6789); 

加入多播组 

sjoinGroup(group); 

创建一个数据报封装多播信息 

DatagramPacket hi = new DatagramPacket(msggetBytes(), msglength(), 

group, 6789); 

发送 

ssend(hi); 

接收多播信息的步骤 

开辟接收缓冲区 

byte[] buf = new byte[1000]; 

创建接收数据报 

DatagramPacket recv = new DatagramPacket(buf, buflength); 

接收 

sreceive(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中尝试连接共享目录,但连接失败,可能有以下原因:

1 共享目录不存在或路径不正确:请确保您正在连接的共享目录存在,并且路径是正确的。您可以尝试在文件资源管理器中手动打开该共享目录,以确保它存在并且可以访问。

2 没有正确的权限:请确保您正在连接的共享目录具有正确的权限。您需要具有读取和写入该共享目录的权限才能连接它。请联系系统管理员,以确保您具有足够的权限。

3 网络连接问题:如果您的网络连接不稳定或连接速度较慢,可能会导致连接共享目录失败。请确保您的网络连接良好,并尝试使用其他计算机连接该共享目录,以确认该共享目录是否可用。

4 防火墙或安全软件阻止了连接:如果您的计算机上安装了防火墙或其他安全软件,可能会阻止您连接共享目录。请检查您的安全软件设置,并尝试临时禁用防火墙或安全软件,以确认它们是否是连接失败的原因。

如果您已经排除了以上问题,仍然无法连接共享目录,请提供更多详细信息和错误消息,以便我更好地帮助您解决问题。

java实现共享数据可以将这些要共享的数据封装到一个类里并且用静态static修饰,当其他类要使用这些变量时,只需用这个类的类名变量名即可。

事例代码如下:

变量类:

public class Demo1 {

public static int a = 1;

public static int b = 2;

public static int c = 3;

}

使用变量的类:

public class Demo2 {

public static void main(String[] args) {

Systemoutprintln(Demo1a);

Systemoutprintln(Demo1b);

Systemoutprintln(Demo1c);

}

}

这里使用static的好处是变量经过static的修饰,在使用这些变量时不用再创建这个类出来,只需使用类名变量名即可使用,节省了空间;还有需要注意的是变量名需要用public来修饰,保证再不同包下的类也能使用该类下的变量。

用java执行cmd命令就行了。

Runtime rt = RuntimegetRuntime();

rtexec("explorerexe c://windows");

事件自己加就行了

/

读取某个文件夹下的所有文件

/

public static boolean readfile(String filepath) throws FileNotFoundException, IOException {

try {

File file = new File(filepath);

if (!fileisDirectory()) {

Systemoutprintln("文件");

Systemoutprintln("path=" + filegetPath());

Systemoutprintln("absolutepath=" + filegetAbsolutePath());

Systemoutprintln("name=" + filegetName());

} else if (fileisDirectory()) {

Systemoutprintln("文件夹");

String[] filelist = filelist();

for (int i = 0; i < filelistlength; i++) {

File readfile = new File(filepath + "\\" + filelist[i]);

if (!readfileisDirectory()) {

Systemoutprintln("path=" + readfilegetPath());

Systemoutprintln("absolutepath="

+ readfilegetAbsolutePath());

Systemoutprintln("name=" + readfilegetName());

} else if (readfileisDirectory()) {

readfile(filepath + "\\" + filelist[i]);

}

}

}

} catch (FileNotFoundException e) {

Systemoutprintln("readfile() Exception:" + egetMessage());

}

return true;

}

import javaioFileOutputStream;

import javaioInputStream;

import javanetURL;

import androidappService;

import androidcontentIntent;

import androidosHandler;

import androidosIBinder;

import androidosMessage;

import androidwidgetToast;

public class MyService2 extends Service {

Thread thread = new Thread() {

@Override

public void run() {

try {

// 声明抛出所有例外

URL tirc = new URL(">

以上就是关于基于java的p2p实现文件共享和传输全部的内容,包括:基于java的p2p实现文件共享和传输、java连接共享目录连不上、Java如何在几个Java文件中共享数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9868550.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存