资源简介
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\P2PSrvfr
文件 5722 2010-02-05 10:28 p2pserver\src\xwz\p2p\upd\server\P2PSrvfr
目录 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
- 上一篇:微信公众号支付改良版
- 下一篇:宿舍管理系统Java开发,sql数据库
相关资源
- java图片浏览器跨平台运行程序与源码
- 基于java的在线考试系统-毕业设计
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
评论
共有 条评论