qq讨论组怎么建,2022怎么创建QQ讨论组

学习编程最重要的就是兴趣引导,所以在学习之前能够看到一个项目成型是非常有必要的。QQ微信作为大家经常使用的社交软件,一定特别贴切实际。今天就带大家去了解一下,一个简单的QQ聊天工具其实并不复杂。首先把

学习编程最重要的就是兴趣引导,所以在学习之前能够看到一个项目成型是非常有必要的。

QQ微信作为大家经常使用的社交软件,一定特别贴切实际。

今天就带大家去了解一下,一个简单的QQ聊天工具其实并不复杂。

首先把这个聊天的项目简单的分为四步,也就是整体的框架(目录)。

Java项目——简单的QQ聊天工具(目录)

一、聊天演示

二、服务器端

三、客户端

四、Util工具类

聊天演示

这个是我自己模拟的截图,由于只有一台电脑,所以只能运行多个窗口进行演示(你也可以多台电脑演示)。

演示截图

这里的服务器端是Server,2022怎么创建QQ讨论组,客户端有三个分别是111、222和333,当我们正常聊天时是群聊状态,想要进行私聊可以进行@XXX:即可,该系统可以完成多台电脑的联机。

服务器端

下面给大家详细的讲解一下关于QQ群聊和私聊的具体思想:

首先这个程序用了TCP协议,也叫做三次握手协议。为什么这样讲呢?

如果可以,服务器会给一个回复,当客户端接到这个肯定的回复后才能向服务器发送消息,所以需要先启动服务器端,其中,服务器端和客户端之间的信息传输都是以流的方式进行的,如何启动服务器端呢?

这个是我写的代码,里面都有注释:由于从JDK中复制过来的代码格式会被平台调整,所以这里照齐上可能不太好看。

package com.TCP;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.ArrayList;

import java.util.List;

**

* 该类实现的是服务器端,也只有启动了服务器,客户端才能进行信息的交流

* @author 11852

*

*

public class Server {

//这个list集合是用来存储各个客户端的,每当有一个客户端建立了连接,这里就会存储起来

public static void main(String[] args) throws IOException {

System.out.println(&34;);

// 指定端口,使用ServerSocket创建服务器,此时创建了一个名字为server端口号为12345

的服务器

ServerSocket server = new ServerSocket(12345);

boolean flag = true;

while (flag) {

/ 阻塞式等待连接accept,服务器调用accept方法,即是获得一个客户端的连接

/如果没有客户端连接,则该程序处于堵塞状态

Socket client = server.accept();

System.out.println(&34;);

/客户端与服务器建立了连接之后,获取该客户端的输入流和输出流对象

Channel channel = new Channel(client);

list.add(channel);// 用list容器管理所有的人员

/这里是实现多线程,即每个客户端都可以进行与服务器端的交流

new Thread(channel).start();

}

server.close();

}

/ 一个客户端代表一个Channel

static class Channel implements Runnable {

private DataInputStream dis;

private DataOutputStream dos;

private Socket client;

private boolean isRunning;

qq讨论组怎么建

private String name;

/这是构造方法

public Channel(Socket client) {

this.client = client;

try {

dis = new DataInputStream(client.getInputStream());

isRunning = true;

name = receive();

} catch (IOException e) {

relese();

}

try {

} catch (IOException e) {

relese();

}

}

/ 接收消息

private String receive() {

String msg = &34;;

try {

msg = dis.readUTF();

1、首先登入qq软件,选择界面中的联系人,在联系人界面中,可以看到右侧有一个“+”选项,这时点击“+”选项;2、在+号中,可以选择第二个,创建群聊,在弹出来的界面中,然后选择下面的选人创建;3、在选人创建中,现。

} catch (IOException e) {

relese();

}

return msg;

}

/ 发送消息

private void send(String msg) {

try {

dos.writeUTF(msg);

} catch (IOException e) {

relese();

}

}

/ 群聊,发给别人

private void sendOthers(String msg) {

/ 私聊格式@XXX:这里是找到以@开头的信息

1、首先我们登录手机QQ,然后点击联系人===群组 2、在群组中点击讨论组 3、点击立即创建讨论组,邀请你想要邀请的好友进讨论组 4、无须等待验证,你的好友便进群了,接下来就可以聊天了 。

if (msg.startsWith(&34;)) {

int idx = msg.indexOf(&34;);

String targetName = msg.substring(1,idx);

msg = msg.substring(idx + 1);

for (Channel other : list) {

if (other.name.equals(targetName)) {

other.send(this.name + &34; + msg);

}

}

} else {

for (Channel other : list) {

if (other == this) {

continue;

} else {

other.send(this.name + &34; + msg);

}

}

}

}

/ 释放资源

private void relese() {

this.isRunning = false;

/这里的Util是自定义的一个类

Util.close(dis,dos,client);

}

@Override

public void run() {

while (isRunning) {

String msg = receive();

if (!msg.equals(&34;)) {

sendOthers(msg);

}

}

}

}

}

客户端

客户端中用到了接收信息、发送信息以及释放资源

package com.TCP;

目前QQ已经取消了讨论组的功能,只能创建群聊,下面是具体操作步骤: 1、点击加号 打开并登录QQ,点击右上角的加号。2、创建群聊 选择创建群聊,根据需要选择创建方式,以选人创建为例。3、勾选好友 勾选要。

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.Socket;

public class Client {

public static void main(String[] args) throws IOException {

System.out.println(&34;);

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

System.out.println(&34;);

String name = br.readLine();

/ 建立连接,使用Socket创建连接,括号内置服务器的地址和端口

Socket client = new Socket(&34;,12345);

/ 客户端发送消息

new Thread(new Send(client,name)).start();

new Thread(new Receive(client)).start();

}

}

在实现客户端的时候,我这里是在控制台输入的信息,也可以进行跨级聊天,但前提是要在同一个局域网内,对于客户端来说,需要客服端进行发送信息和接收信息,首先看看接收信息吧

package com.TCP;

import java.io.DataInputStream;

import java.io.IOException;

import java.net.Socket;

public class Receive implements Runnable {

private DataInputStream dis;

private Socket client;

private boolean isRunning;

qq讨论组怎么建

/这里是传过来了一个客户端对象,并获得了输入流对象

public Receive(Socket client) {

this.client = client;

try {

dis = new DataInputStream(client.getInputStream());

isRunning = true;

} catch (IOException e) {

release();

}

}

/这里是实现了获取信息

private String receive() {

String msg = &34;;

try {

msg = dis.readUTF();

} catch (IOException e) {

release();

}

return msg;

}

/这是重写了run方法,实现多线程,也就是多个客户端都能与服务器打交道

@Override

public void run() {

while (isRunning) {

String msg = receive();

if (!msg.equals(&34;)) {

System.out.println(msg);

}

}

}

/ 释放资源

private void release() {

this.isRunning = false;

Util.close(dis,client);

}

}

然后就是发送类了,发送跟接收差不多,基本思路是一样的

package com.TCP;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.IOException;

QQ怎么创建讨论组 1、首先,打开自己的QQ主界面,然后选择QQ群面板 2、在出现的QQ群面板中,找到讨论组,并选中它 3、如果你的QQ没有创建过讨论组,会在讨论组面板中看到一个“创建讨论组”按钮,单击它,。

import java.io.InputStreamReader;

import java.net.Socket;

public class Send implements Runnable {

private BufferedReader console;

private DataOutputStream dos;

qq讨论组怎么建

private Socket client;

private boolean isRunning;

/ 这里用到了名字,就是知道是谁谁发的信息

public Send(Socket client,String name) {

console = new BufferedReader(new InputStreamReader(System.in));

this.client = client;

try {

this.isRunning = true;

send(name);

} catch (IOException e) {

release();

}

}

/ 这里是重写了run方法

@Override

public void run() {

while (isRunning) {

String msg = getStrFromConsole();

if (!msg.equals(&34;)) {

send(msg);

}

}

}

/ 这里是发送消息

private void send(String msg) {

try {

dos.writeUTF(msg);

dos.flush();

} catch (IOException e) {

release();

}

}

/ 这里是获取控制台输入的信息

private String getStrFromConsole() {

String msg = &34;;

try {

msg = console.readLine();

} catch (IOException e) {

release();

}

return msg;

}

/ 释放资源

private void release() {

this.isRunning = false;

Util.close(dos,client);

}

}

由于从JDK中复制过来的代码格式会被平台调整,所以这里照齐上可能不太好看。

Util工具类

这个就是Util类了,这个类就是实现了释放资源。

package com.TCP;

import java.io.Closeable;

**

* 工具类

*

* @author 11852

*

*

public class Util {

// 释放资源

public static void close(Closeable... targets) {

for (Closeable target : targets) {

try {

if (target != null) {

target.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

由于从JDK中复制过来的代码格式会被平台调整,所以这里照齐上可能不太好看。

总结:学习编程没有你想象的难,入门很简单。关注我,带你一块学习JAVA。

我的博客

上一篇 2023年02月08 16:35
下一篇 2023年02月12 21:02

相关推荐

  • steam饥荒多少钱,饥荒联机版为啥76元

    饥荒系列打折!全系列价格达到史上最低。单机版本体只需要6元!比如一台普通独立steam饥荒服务器配置的价格月付在1000元人民币以内,中等配置的价格月付在1000到5000块钱之间,高端配置的价格月付

    2023年02月21 225
  • 怎么附魔,35个新手必看红石机关

    我的世界附魔指令!我的世界是一款非常好玩的手机游戏,在这款游戏中我们可以给装备附魔,35个新手必看红石机关,今天口袋巴士小编xrump就来给大家详细说说这款游戏中的附魔指令,希望大家喜欢!enchan

    2023年02月08 266
  • 古尔丹怎么死的,魔兽世界为什么有两个古尔丹

    又拖了很长时间没有更新了,实在是太忙,但主要的原因还是懒,哇哈哈!废话不多说,开始吧!给大家回忆回忆之前的内容,奥格瑞姆为了拉拢阿曼尼巨魔加入部落,向他们许诺可以帮他们怼死奎尔萨拉斯的高等精灵。结果打

    2023年01月11 268
  • 大话西游2天杀星怎么杀,大话小号最好杀的天星

    哈喽,大家好,我是你们的二哥!大话西游2可以说是陪伴我们从小玩到大的网游,如今已经有18年之久。而在这款游戏中我们找到了很多兄弟,朋友!也经历了很多欢快的时光!最近二哥在跟几位老铁聊天的时候,就回忆起

    2023年02月03 256
  • dnf勋章怎么强化,DNF勋章怎么强化到10

    在DNF110版本开始以来,由于版本前期名望需求十分苛刻,各类细节的打造资源也不足,玩家们想打造新号也是有心无力。而到了目前的伊斯大陆-军团版本,在副本难度不高的情况下,对应产出的勇者光迹材料兑换商店

    2023年02月03 263
  • 我的世界皮肤怎么用,我的世界黄金骑士皮肤怎么用

    国际版导入皮肤的方法是:需要我们下载好自己需要导入MC的皮肤,创建压缩文件,用压缩文件打开游戏找到entity文件,删除steve.jpg将自己的图片皮肤名字改成steve.jpg,我的世界黄金骑士皮

    2023年01月17 277
  • 英雄联盟怎么买英雄,英雄联盟新手怎么快速买英雄

    英雄联盟新手怎么快速买英雄,随着光明哨兵事件的进一步展开,英雄联盟迎来了全新的主题活动,在源计划活动结束不到两周后,光明哨兵事件为玩家带来了一张全新的通行证。大家可以在活动期间积极参加游戏,完成各种任

    2023年02月11 259
  • 寻仙怎样提高战斗力,新寻仙怎样提升战斗力

    在任何一款网游中,战力值都是衡量人物实力一个比较重要的标准,《寻仙手游》自然也不会例外,不过跟大多数游戏不同的是,《寻仙手游》中可以提升战力的途径极为广泛,除了装备、宠物、坐骑等常规方式,就连探索和放

    2023年01月07 205
  • 绝地求生画面怎么设置,绝地求生界面设置

    hello,欢迎收看由霖月为各位带来的最新PUBG画面设置教程2019.2.25此次的最新版本画面设置,超级实用,收藏的同时别忘点赞哟!我本来是想秀一下自己最近很强,结果我秀了一下截图朋友们偶然发现我

    2023年01月19 244
  • 耀怎么玩

    前排防杠此贴旨在帮助一些想学习曜的新手曜玩家,分享内容基础但实用,个人认为是玩曜的入门必修课。其余的连招技巧等不在此贴讨论范围内,因为我觉得没什么好教的,只有四个字熟能生巧。曜的优缺点优点是灵活、刷野

    2023年02月03 242
  • 诅咒之地怎么去,魔兽去诅咒之地

    {本图文皆【非正式攻略】原创作品,未经授权严禁转载。}双方阵营在诅咒之地的任务基本是一样的。路口那位部落英雄的灵魂任务会单独写一篇,这个任务会很长很长……怎么去诅咒之地?部落玩家飞到悲伤沼泽的斯通纳德

    2023年02月04 271
  • 怎样下载方舟生存进化

    地图选择好后就可以点击上方的安装按钮进行地图以及mod的下载,方舟生存进化2.0下载中文,会有个提示款出现显示下载安装的进度,等到最后在最下方出现Finishedupgradeprocess.且没有出

    2023年01月03 228
  • lol有多少个英雄,lol全英雄列表

    lol手游如今已经上线一个多月的时间了,从当初国服玩家纷纷涌向外服,到现在随着大家对于游戏机制的了解和熟悉,过了体验期就纷纷退游。很多还在坚持的玩家表示,如今好友列表中很多都变成了黑色,甚至曾经和你一

    2023年02月21 267
关注微信