⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qqclient.java

📁 java写的qq代码实现qq的部分功能
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    		packet.setSearchType(QQ.QQ_SEARCH_CUSTOM);
    		packet.setPage(page);
    		packet.setQQStr(qqStr);
    		packet.setNick(nick);
    		packet.setEmail(email);
    		gate.send(MAIN_PORT, packet, false);	
	        return packet.getSequence();
    	} else
    	    return 0;
    }
    
    /**
     * 添加一个好友
     * @param qqNum 要添加的人的QQ号
     * @return 发送出的包的序号
     */
    public char addFriend(int qqNum) {
    	if(user.isLoggedIn()) {
	        AddFriendPacket packet = new AddFriendPacket(user);
	        packet.setTo(qqNum);
    		gate.send(MAIN_PORT, packet, true);	
	        return packet.getSequence();
    	}
    	return 0;
    }
    
    /**
     * 删除一个好友
     * @param qqNum 要删除的好友的QQ号
     * @return 如果包发送成功则返回包序号,否则返回0
     */
    public char deleteFriend(int qqNum) {
    	if(user.isLoggedIn()) {
	        DeleteFriendPacket packet = new DeleteFriendPacket(user);
	        packet.setTo(qqNum);
    		gate.send(MAIN_PORT, packet, true);		
	        return packet.getSequence();
    	}
    	return 0;
    }
    
    /**
     * 把某人的好友列表中的自己删除
     * @param qqNum 我想把我自己删除的好友的QQ号
     */
    public void removeSelfFrom(int qqNum) {
    	if(user.isLoggedIn()) {
	        RemoveSelfPacket packet = new RemoveSelfPacket(user);
	        packet.setRemoveFrom(qqNum);
    		gate.send(MAIN_PORT, packet, true);			
    	}
    }
    
    /**
     * 把好友从服务器端的好友列表中删除
     * 
     * @param qqNum
     * 		要删除的好友QQ号
     */
    public void removeFriendFromList(int qqNum) {
        if(user.isLoggedIn()) {
            FriendDataOpPacket packet = new FriendDataOpPacket(user);
            packet.setSubCommand(QQ.QQ_REMOVE_FRIEND_FROM_LIST);
            packet.setQQ(qqNum);
    		gate.send(MAIN_PORT, packet, true);	
        }
    }
    
    /**
     * 添加好友到服务器端的好友列表中
     * 
     * @param group
     * 		好友的组号,我的好友组是0,然后是1,2,...
     * @param qqNum
     * 		要添加的好友QQ号
     */
    public void addFriendToList(int group, int qqNum) {
        if(user.isLoggedIn()) {
            UploadGroupFriendPacket packet = new UploadGroupFriendPacket(user);
            packet.addFriend(group, qqNum);
    		gate.send(MAIN_PORT, packet, false);	
        }
    }
    
    /**
     * 如果要加的人需要认证,用这个方法发送验证请求
     * @param qqNum 要加的人的QQ号
     * @param message 附加的请求消息内容
     * @return
     * 		包序号
     */
    public char sendAddFriendAuth(int qqNum, String message) {
    	if(user.isLoggedIn()) {
	        AddFriendAuthPacket packet = new AddFriendAuthPacket(user);
	        packet.setTo(qqNum);
	        packet.setMessage(message);
	        packet.setAction(QQ.QQ_MY_AUTH_REQUEST);	      
    		gate.send(MAIN_PORT, packet, true);	
	        return packet.getSequence();
    	}
    	return 0;
    }
    
    /**
     * 探测对方是否隐身,如来神掌,万无一失
     */
    public void detectHidden(int receiver) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_UDP_REQUEST);
            packet.setReceiver(receiver);
            packet.setTransferType(QQ.QQ_TRANSFER_FACE);
            packet.setFileName("");
            packet.setFileSize(0);
            packet.setFakeIp(true);
    		gate.send(MAIN_PORT, packet, true);	
        }
    }
    
    /**
     * 发送传送文件请求包,我们把包序号用作会话序号返回
     * @param filePath 文件名,不包含路径
     * @param fileSize 文件大小
     * @param directPort 直接端口
     * @param udp true表示UDP方式
     * @return 文件传输会话序号
     */
    public char requestSendFile(int receiver, String filePath, int fileSize, int directPort, boolean udp) {
    	if(user.isLoggedIn()) {
    		SendIMPacket packet = new SendIMPacket(user);
    		packet.setMessageType(udp ? QQ.QQ_IM_UDP_REQUEST : QQ.QQ_IM_TCP_REQUEST);
    		packet.setReceiver(receiver);
    		packet.setFileName(filePath);
    		packet.setFileSize(fileSize);
    		packet.setDirectPort(directPort);
    		gate.send(MAIN_PORT, packet, true);	
    		return packet.getSequence(); 
    	} else
    	    return 0;
    }
    
    /**
     * 取消发送文件
     * @param receiver
     * @param sequence
     */
    public void cancelSendFile(int receiver, char sequence) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_REQUEST_CANCELED);
            packet.setReceiver(receiver);
            packet.setSessionId(sequence);
    		gate.send(MAIN_PORT, packet, true);	
        }
    }
    
    /**
     * 发送同意接收文件包
     * @param receiver 接收者
     * @param directPort 我的直接端口
     * @param sequence 会话序号
     * @param udp true表示UDP方式
     */
    public void acceptSendFile(int receiver, int directPort, char sequence, boolean udp) {
    	if(user.isLoggedIn()) {
    		SendIMPacket packet = new SendIMPacket(user);
    		packet.setMessageType(udp ? QQ.QQ_IM_ACCEPT_UDP_REQUEST : QQ.QQ_IM_ACCEPT_TCP_REQUEST);
    		packet.setReceiver(receiver);
    		packet.setDirectPort(directPort);
    		packet.setSessionId(sequence);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 发送拒绝接收文件包
     * @param receiver 接收者
     * @param sequence 会话序号
     * @param udp true表示是UDP请求,false表示TCP请求
     */
    public void rejectSendFile(int receiver, char sequence, boolean udp) {
    	if(user.isLoggedIn()) {
    		SendIMPacket packet = new SendIMPacket(user);
    		packet.setMessageType(udp ? QQ.QQ_IM_REJECT_UDP_REQUEST : QQ.QQ_IM_REJECT_TCP_REQUEST);
    		packet.setReceiver(receiver);
    		packet.setSessionId(sequence);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 发送通知端口信息包
     * @param receiver
     * @param directPort
     * @param localIp
     * @param localPort
     * @param sequence
     */
    public void notifyFilePort(int receiver, int directPort, byte[] localIp, int localPort, char sequence) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_NOTIFY_IP);
            packet.setReceiver(receiver);
            packet.setSessionId(sequence);
            packet.setDirectPort(directPort);
            packet.setLocalIp(localIp);
            packet.setLocalPort(localPort);
    		gate.send(MAIN_PORT, packet, true);	
        }
    }
    
    /**
     * 请求对方连接我
     * @param receiver
     * @param directPort
     * @param sequence
     */
    public void pleaseConnectMe(int receiver, int directPort, char sequence) {
        if(user.isLoggedIn()) {
            SendIMPacket packet = new SendIMPacket(user);
            packet.setMessageType(QQ.QQ_IM_ARE_YOU_BEHIND_FIREWALL);
            packet.setReceiver(receiver);
            packet.setSessionId(sequence);
            packet.setDirectPort(directPort);
    		gate.send(MAIN_PORT, packet, true);	
        }
    }
    
    /**
     * 如果我要拒绝一个人加我为好友的请求,用这个方法发送拒绝消息
     * @param qqNum 请求加我的人的QQ号
     * @param message 附加消息
     */
    public void rejectAddMe(int qqNum, String message) {
    	if(user.isLoggedIn()) {
	        AddFriendAuthPacket packet = new AddFriendAuthPacket(user);
	        packet.setTo(qqNum);
	        packet.setMessage(message);
	        packet.setAction(QQ.QQ_MY_AUTH_REJECT);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 如果我要同意一个人加我为好友的请求,用这个方法发送同意消息
     * @param qqNum 请求加我的人的QQ号
     */
    public void approveAddMe(int qqNum) {
    	if(user.isLoggedIn()) {
	        AddFriendAuthPacket packet = new AddFriendAuthPacket(user);
	        packet.setTo(qqNum);
	        packet.setAction(QQ.QQ_MY_AUTH_APPROVE);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 下载好友分组
     * 
     * @param beginFrom
     * 		起始好友号
     */
    public void downloadFriend(int beginFrom) {
    	if(user.isLoggedIn()) {
    		DownloadGroupFriendPacket packet = new DownloadGroupFriendPacket(user);
    		packet.setBeginFrom(beginFrom);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 上传分组名称
     * 
     * @param groups
     */
    public void uploadGroup(List groups) {
    	if(user.isLoggedIn()) {
    		GroupDataOpPacket packet = new GroupDataOpPacket(user);
    		packet.setType(QQ.QQ_UPLOAD_GROUP_NAME);
    		packet.setGroups(groups);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 下载分组名称
     */
    public void downloadGroup() {
    	if(user.isLoggedIn()) {
    		GroupDataOpPacket packet = new GroupDataOpPacket(user);
    		packet.setType(QQ.QQ_DOWNLOAD_GROUP_NAME);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 创建一个临时群
     * 
     * @param name
     * 		群名称
     * @param type
     * 		临时群类型
     * @param parentClusterId
     * 		父群内部ID
     * @param members
     * 		成员QQ号数组
     */
    public void createTemporaryCluster(String name, byte type, int parentClusterId, int[] members) {
    	if(user.isLoggedIn()) {
    		ClusterCreateTempClusterPacket packet = new ClusterCreateTempClusterPacket(user);
    		packet.setType(type);
    		packet.setName(name);
    		packet.setMembers(members);
    		packet.setParentClusterId(parentClusterId);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 创建一个固定群
     * @param name 群名称
     * @param notice 群声明
     * @param description 群描述
     * @param members 群成员
     * @param authType 群认证类型
     * @param category 群的分类
     */
    public void createPermanentCluster(String name, String notice, String description, int[] members, int category, byte authType) {
    	if(user.isLoggedIn()) {
    		ClusterCreatePacket packet = new ClusterCreatePacket(user);
    		packet.setType(QQ.QQ_CLUSTER_TYPE_PERMANENT);
    		packet.setAuthType(authType);
    		packet.setCategory((char)category);
    		packet.setName(name);
    		packet.setNotice(notice);
    		packet.setDescription(description);
    		packet.setMembers(members);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 请求群的信息
     * 
     * @param clusterId
     * 		群内部ID
     */
    public void getClusterInfo(int clusterId) {
    	if(user.isLoggedIn()) {
    		ClusterGetInfoPacket packet = new ClusterGetInfoPacket(user);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, true);	  	        
    	}
    }
    
    /**
     * 请求临时群信息
     * 
     * @param type
     * @param clusterId
     * @param parentClusterId
     */
    public void getTempClusterInfo(byte type, int clusterId, int parentClusterId) {
        if(user.isLoggedIn()) {
            ClusterGetTempClusterInfoPacket packet = new ClusterGetTempClusterInfoPacket(user);
            packet.setType(type);
            packet.setClusterId(clusterId);
            packet.setParentClusterId(parentClusterId);
    		gate.send(MAIN_PORT, packet, false);	
        }
    }
    
    /**
     * 得到群的在线成员
     * @param clusterId
     */
    public void getClusterOnlineMember(int clusterId) {
    	if(user.isLoggedIn()) {
    		ClusterGetOnlineMemberPacket packet = new ClusterGetOnlineMemberPacket(user);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 激活群
     * @param clusterId
     */
    public void activateCluster(int clusterId) {
    	if(user.isLoggedIn()) {
    		ClusterActivatePacket packet = new ClusterActivatePacket(user);
    		packet.setClusterId(clusterId);
    		gate.send(MAIN_PORT, packet, true);	
    	}
    }
    
    /**
     * 得到群中成员的信息
     * @param clusterId 群的内部ID
     * @param members 成员的QQ号列表,元素类型是Integer
     */
    public void getClusterMemberInfo(int clusterId, List members) {
    	if(user.isLoggedIn()) {
    		// 由于一次最多只能得到61个成员的信息,所以这里按照30个成员一组进行拆分
    		// 因为QQ是一次拆这么多
    		int size = members.size();
    		int times = (size + 29) / 30;
    		for(int i = 0; i < times; i++) {
	    		ClusterGetMemberInfoPacket packet = new ClusterGetMemberInfoPacket(user);
	    		packet.setClusterId(clusterId);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -