• 大小: 734KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-23
  • 语言: 其他
  • 标签: 课程设计  P2P  

资源简介

广东工业大学计算机网络课程设计——p2p程序。包含课程设计报告。可以拿优!

资源截图

代码片段和文件信息

package com.sam.controller;

import java.io.*;
import java.net.*;
import java.util.*;

import org.json.*;

import com.sam.utils.ConstantValue;
import com.sam.utils.Utils;

public class Broadcast
{
private ReceiveMessageListener receiveBroadcastListener;

private String localName;
private String localIp;

public Broadcast(String localName String localIp)
{
super();
this.localName = localName;
this.localIp = localIp;
}

/**
 * 发送广播
 * @param type 发送消息的类型
 */
public void send(String type)
{
DatagramSocket socket = null;
try
{
JSONobject jsonobject = new JSONobject();
jsonobject.put(ConstantValue.TYPE type);
jsonobject.put(ConstantValue.NAME localName);
jsonobject.put(ConstantValue.IP localIp);
byte[] msg = jsonobject.toString().getBytes();
InetAddress inetAddr = InetAddress.getByName(“255.255.255.255“);
socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(msg msg.length inetAddr 3333);
socket.send(packet);

System.out.println(“send broadcast->“ + new String(packet.getData()));
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (socket != null)
socket.close();
}
}

/**
 * 开启线程随时接收广播
 */
public void receive()
{
new Thread(new Runnable()
{
@Override
public void run()
{
DatagramSocket socket = null;
try
{
DatagramPacket packet = new DatagramPacket(new byte[1024] 1024);
socket = new DatagramSocket(3333);
while (true)
{
System.out.println(“receive broadcast begin“);

socket.receive(packet);
byte[] recvByte = Arrays.copyOfRange(packet.getData() 0 packet.getLength());
String json = new String(recvByte);
JSONobject jsonobject = new JSONobject(json);
String type = jsonobject.getString(ConstantValue.TYPE);
String name = jsonobject.getString(ConstantValue.NAME);
String ip = jsonobject.getString(ConstantValue.IP);

if (!localIp.equals(ip) && receiveBroadcastListener != null)
{
String msg = Utils.HostToString(name ip);
if (type.equals(ConstantValue.TYPE_OFFLINE))
{
receiveBroadcastListener.contactsOffline(msg);
}
else
{
receiveBroadcastListener.contactsOnline(msg);

if (type.equals(ConstantValue.TYPE_ONLINE))
responseToBroadcast(ip);
}
}

System.out.println(“receive broadcast: msg->“ + json);
}
}
catch (SocketException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
if (socket != null)
socket.close();
}
}
}).start();
}

/**
 * 回应对等方的上线广播
 * @param ip 本地的ip地址
 */
private void responseToBroadcast(String ip)
{
DatagramSocket socket = null;
try

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      168395  2017-06-27 21:26  P2P(可执行文件).jar
     文件      422500  2018-02-01 12:14  课设报告.docx
     目录           0  2017-06-27 21:31  P2P\
     文件         388  2017-05-28 00:09  P2P\.classpath
     文件         379  2017-06-27 21:24  P2P\.project
     目录           0  2017-06-27 21:25  P2P\.settings\
     文件         598  2017-05-28 00:08  P2P\.settings\org.eclipse.jdt.core.prefs
     目录           0  2017-06-27 21:25  P2P\bin\
     目录           0  2017-06-27 21:25  P2P\bin\com\
     目录           0  2017-06-27 21:25  P2P\bin\com\sam\
     目录           0  2017-06-27 21:25  P2P\bin\com\sam\controller\
     文件        2962  2017-06-27 21:24  P2P\bin\com\sam\controller\Broadcast$1.class
     文件         306  2017-06-27 21:24  P2P\bin\com\sam\controller\Broadcast$ReceiveMessageListener.class
     文件        3981  2017-06-27 21:24  P2P\bin\com\sam\controller\Broadcast.class
     文件         255  2017-06-27 21:24  P2P\bin\com\sam\controller\FileClient$FileSendingListener.class
     文件        3019  2017-06-27 21:24  P2P\bin\com\sam\controller\FileClient.class
     文件        3071  2017-06-27 21:24  P2P\bin\com\sam\controller\FileServer$1.class
     文件        1399  2017-06-27 21:24  P2P\bin\com\sam\controller\FileServer.class
     文件        1627  2017-06-27 21:24  P2P\bin\com\sam\controller\Main$1.class
     文件        1017  2017-06-27 21:24  P2P\bin\com\sam\controller\Main$2.class
     文件        1033  2017-06-27 21:24  P2P\bin\com\sam\controller\Main$3.class
     文件        5181  2017-06-27 21:24  P2P\bin\com\sam\controller\Main.class
     文件        3054  2017-06-27 21:24  P2P\bin\com\sam\controller\MessageClient.class
     文件        2046  2017-06-27 21:24  P2P\bin\com\sam\controller\MessageServer$1$1.class
     文件        1460  2017-06-27 21:24  P2P\bin\com\sam\controller\MessageServer$1.class
     文件         292  2017-06-27 21:24  P2P\bin\com\sam\controller\MessageServer$ServerInputListener.class
     文件        2802  2017-06-27 21:24  P2P\bin\com\sam\controller\MessageServer.class
     目录           0  2017-06-27 21:25  P2P\bin\com\sam\utils\
     文件        1022  2017-06-27 21:24  P2P\bin\com\sam\utils\ConstantValue.class
     文件        1187  2017-06-27 21:24  P2P\bin\com\sam\utils\Utils.class
     目录           0  2017-06-27 21:25  P2P\bin\com\sam\view\
............此处省略43个文件信息

评论

共有 条评论