资源简介
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开发,sql数据库
- JAVA简易画图工具
- java聊天系统 可以传送文件哈
- 小的聊天软件的Java实现
- java模拟操作系统
- 传智播客CRM项目视频详细讲解及源代
- Java课程设计魔板游戏源代码
- 常见的Java上机面试题
- 调用百度AI平台上的短文本相似度AP
- JAVA程序与PLC通信——学习使用
- java打字程序
- Java socket 代理邮件发送程序
- 基于java的网络白板+聊天室
- Mybatis Generator自动生成JavaEntity带中文
- GPS北斗车辆监控设备之javaWEB平台
- Java基础教学视频
- java写的一个多文档记事本程序
- JAVA 课程设计源码 连连看 SWING 完整代
- Java局域网一对一通讯小软件
- 网络版五子棋纯java
- java台球游戏源代码
- adnroid开发框架rxjava+dagger2+retrofit2okh
- java 大整数计算器 包含源代码
- 基于CS模式的聊天室大二java课设
- java php代码.rar
- JAVA实习报告 java
- Java2实用教程第5版习题解答及代码.
- 坦克大战完整版韩顺平java
-
java 解析xm
l所需要的dom4j包 - java视频播放器java视频播放器
评论
共有 条评论