25,985
社区成员
发帖
与我相关
我的任务
分享
public void penetrate(Pack pack, InfoPack ip) {
String info=newStr(ip.getInfo());
if(null!=info){
String[] tem=info.split(Command.splitStr);
String email=tem[0];
String ownerMail=tem[1];
ManageConnect mc=new ManageConnect();
if(mc.online.containsKey(email)){
UserStatus us=mc.getUser(email);
String hostport = socketAddToStr(us.getAddress());
//给客户端发送所请求的地址
server.send(Command.penetrateRe, hostport+Command.splitStr+email, address);
//给被请求方发打洞信息
String host=socketAddToStr(address);
server.send(Command.needPenetrate, host+Command.splitStr+ownerMail, us.getAddress());
}else{
//请求的客户不在线
server.send(Command.penetrateErr, email, address);
}
}
}
这是客户到接收到服务端的命令后的函数。
if(command==Command.penetrateRe){
penetrateRe(pack, ip);
}else if(command==Command.needPenetrate){
try {
Thread.sleep(1000*2);
} catch (InterruptedException e) {
e.printStackTrace();
}
penetrateRe(pack, ip);
}else if(command==Command.penetrateOk){
String email=handlerData(pack, ip);
System.out.println(email+": hole punched is success complete....................");
}
private void handlerLogin(Pack pack, InfoPack ip) {
String friend = handlerData(pack, ip);
if(null!=friend&&friend!=""){
LoginUI login = (LoginUI) ManageViewUI.getObject("login");
String email = login.getMailJtf().getText();
login.dispose();
ManageViewUI.removeObject("login");
MainUI mu = new MainUI(email);
ManageViewUI.putObject("main", mu);
ManageServer.getClientUDP().sendHeartBeat(email);
String[] userFriend = friend.split(Command.splitStr);
mu.putFriendList(userFriend);
}
}