• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: Java
  • 标签: Java  P2P  UDP  点对点  NAT  

资源简介

Java P2P聊天服务端源码,通过NAT打洞技术,借助P2P服务端,采用客户端程序可以实现客户端点对点通讯

资源截图

代码片段和文件信息

/**
 * MainServer.java Nov 23 2009
 * 
 * Copyright 2009 xwz Inc. All rights reserved.
 */
package xwz.p2p.upd.server;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;

import xwz.p2p.upd.util.ConnectionClientInfo;
import xwz.p2p.upd.util.MyProtocol;
import xwz.p2p.upd.util.StringUtil;

/**
 * @author xwz
 * @version 1.0 Nov 23 2009 11:04:50 PM
 */
public class MainServer {
// 所有客户端列表
private static List allClients = new ArrayList();
private static DatagramSocket ds = null; 
private static P2PSrvframe p2pframe = new P2PSrvframe();
private static MainServer mainServer = new MainServer();
private static Timer submitTimer = new Timer();

// 开始P2P交换服务(程序起点)
public static void StartP2PServiveChanege() throws IOException {
byte[] buf = new byte[1024];
DatagramPacket p = new DatagramPacket(buf 1024);

ds.receive(p);

// 取出信息
String content = new String(p.getData() 0 p.getLength());
String ip = p.getAddress().getHostAddress();
int port = p.getPort();

// 输出接收到的数据
if (!content.startsWith(MyProtocol.HEART)) {
System.out.println(ip + “:“ + port + “ >>>> “ + content);
}

// 处理控制部分委托给其他方法做
if (content.startsWith(MyProtocol.LOGIN)) {
dealLogin(ds p content);
} else if (content.startsWith(MyProtocol.HEART)) {
dealHeart(ds p content);
} else if (content.startsWith(MyProtocol.WANT_TO_CONNECT)) {
notifyPunchHole(ds p content);
} else if (content.startsWith(MyProtocol.SUCCESS_HOLE_TO)) {
notifyPunchHoleSuccess(ds p content);
} else {
dealOther(ds p content);
}
}

// 处理登陆请求
private static void dealLogin(DatagramSocket ds DatagramPacket pString content) {
ConnectionClientInfo c = new ConnectionClientInfo();

String[] clientLogin = StringUtil.splitString(contentMyProtocol.SPLITOR);
System.out.println(“clientLogin “ + clientLogin.length);
c.setNickname(clientLogin[1]);
c.setIp(p.getAddress().getHostAddress());
c.setPort(p.getPort());
allClients.add(c);

// 获取所有客户端连接成字符串
String listStr = MyProtocol.LIST_ONLINE + MyProtocol.SPLITOR + serialList();
System.out.println(listStr);

for (ConnectionClientInfo cif : allClients) {
try {
DatagramPacket p2 = new DatagramPacket(listStr.getBytes() listStr.getBytes().length InetAddress.getByName(cif.getIp()) cif.getPort());
ds.send(p2);
} catch (IOException e) {
e.printStackTrace();
}

}




}

// 把列表数据序列化
private static String serialList() {
String str = ““;

for (ConnectionClientInfo cif : allClients) {
String nickname = cif.getNickname();
String ip = cif.getIp();
int port = cif.getPort();
String one = ip + ““ + port + ““ + nickname + MyProtocol.SPLITOR;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        358  2010-02-04 17:25  p2pserver\.classpath

     文件        385  2010-02-04 17:20  p2pserver\.project

     文件       5629  2010-02-22 17:31  p2pserver\src\xwz\p2p\upd\server\MainServer.java

     文件        846  2010-02-08 16:15  p2pserver\src\xwz\p2p\upd\server\P2PServerThread.java

     文件       8622  2010-02-05 10:28  p2pserver\src\xwz\p2p\upd\server\P2PSrvframe.form

     文件       5722  2010-02-05 10:28  p2pserver\src\xwz\p2p\upd\server\P2PSrvframe.java

     目录          0  2010-02-23 09:02  p2pserver\src\xwz\p2p\upd\server

     文件        691  2010-02-04 17:21  p2pserver\src\xwz\p2p\upd\util\ConnectionClientInfo.java

     文件       1684  2010-02-04 17:21  p2pserver\src\xwz\p2p\upd\util\MyProtocol.java

     文件        589  2010-02-04 17:21  p2pserver\src\xwz\p2p\upd\util\StringUtil.java

     目录          0  2010-02-23 09:02  p2pserver\src\xwz\p2p\upd\util

     目录          0  2010-02-23 09:02  p2pserver\src\xwz\p2p\upd

     目录          0  2010-02-23 09:02  p2pserver\src\xwz\p2p

     目录          0  2010-02-23 09:02  p2pserver\src\xwz

     目录          0  2010-02-23 09:02  p2pserver\src

     目录          0  2010-02-23 09:03  p2pserver

----------- ---------  ---------- -----  ----

                24526                    16


评论

共有 条评论