
在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文件中共享数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)