📄 qqclient.java
字号:
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 + -