qq怎么创建讨论组,新版qq讨论组在哪里

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

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

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

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

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

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

一、聊天演示

二、服务器端

三、客户端

四、Util工具类

聊天演示

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

演示截图

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

服务器端

下面给大家详细的讲解一下关于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;

1、打开QQ,找到图示的位置,点击进入群按钮。2、点击“创建”按钮。3、在“创建”的下拉菜单中选择“创建讨论组”选项。4、在弹出的“创建讨论组”对话框中,选择要加入的讨论人员。5、将分类客服底下的三人加入讨论组。6。

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;

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 {

dos = new DataOutputStream(client.getOutputStream());

} catch (IOException e) {

relese();

}

}

/ 接收消息

private String receive() {

String msg = &34;;

try {

msg = dis.readUTF();

} catch (IOException e) {

relese();

}

return msg;

}

/ 发送消息

private void send(String msg) {

try {

dos.writeUTF(msg);

} catch (IOException e) {

relese();

}

}

/ 群聊,发给别人

private void sendOthers(String msg) {

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

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

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

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

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

msg = msg.substring(idx + 1);

qq怎么创建讨论组

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 {

QQ加讨论组的步骤如下:1.首先,我们打开电脑桌面上的QQ,然后登录自己的QQ账号。2.登录QQ后,在QQ窗口,我们点击群聊图标。3.然后点击右侧的【创建】。4.点击【创建】后,在弹出的下拉菜单中,点击【发起多人聊天】。5。

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

}

}

1、点击加号 打开并登录QQ,点击右上角的加号。2、创建群聊 选择创建群聊,根据需要选择创建方式,以选人创建为例。3、勾选好友 勾选要加入群聊的好友,点击立即创建即可。

}

}

/ 释放资源

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;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.Socket;

public class Client {

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;

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

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;

import java.io.InputStreamReader;

import java.net.Socket;

public class Send implements Runnable {

private BufferedReader console;

private DataOutputStream dos;

private Socket client;

private boolean isRunning;

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

public Send(Socket client,String name) {

this.client = client;

try {

dos = new DataOutputStream(client.getOutputStream());

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。

我的博客

上一篇 2022年12月28 07:39
下一篇 2022年12月31 10:00

相关推荐

  • 三星s6怎样刷机,三星s6手机怎么刷机过程

    三星s6手机怎么刷机过程,昨日24号,魅族官方终于公布了三星GalaxyS6Edge适配的Flyme6刷机包。魅族flyme系统可以说是国产系统中的佼佼者,不知道好多三星的机友等在等待这一刻。刷机前请

    2023年01月03 271
  • 索尼电视怎样投屏,sony电视投屏设置在哪

    sony电视投屏设置在哪,在使用索尼电视时,有用户会想将手机APP的画面投屏到电视上需要怎么操作呐?如果要将手机里的图片投屏到电视上又要怎样实现?先来说说视频软件的投屏,以爱奇艺为例,手机和电视保持在

    2023年01月03 288
  • csv文件怎么打开

    源代码:Lib/csv.py模块内容csv模块定义了以下函数:csv.reader(csvfile,dialect=&39;,**fmtparams)返回一个reader对象,该对象将逐行遍历csvf

    2023年01月14 226
  • 硬盘怎么格式化,恢复硬盘到出厂状态

    本期内容之所以选择这个主题来讲是因为现在很少人使用并了解“低级格式化”这个功能了,低级格式化简称“低格”它的作用是将硬盘里面的内容全部清空使硬盘恢复到出厂时的状态,经过低格后的硬盘数据是不可恢复的,记

    2023年01月15 274
  • 抖音号怎么更改,抖音改什么名称吸引粉丝

    抖音改什么名称吸引粉丝,抖音大家都常用,也有很多人认证了蓝V,认证蓝v之后,对自己认证的企业名字不满意,不想要营业执照上面的名字,那怎么改呢?认证之后,页面变得高大上了,有些粉丝都不认识你了,有没有这

    2023年01月09 217
  • 字体怎么放大,word怎么变超大字体

    现在手机屏幕开始越做越大,但是屏幕上的字体似乎没有变化。对于视力不好,或者年纪稍长的人来说。看手机上的文字都是比较困难的。其实手机上的字体可以放大,那么接下来就跟着我一起这样做吧!进入设置显示和亮度字

    2023年01月15 280
  • 怎样知道qq好友是否把我删除,qq怎么知道别人单删你

    方法有这几个:qq怎么知道别人单删你,1、进入的好友管理中心,会显示你的好友,看网页上显示的和你QQ列表里现实的人是不是一样的,如果删除了,网页上就没有对方的显示,而自己QQ里有那人的显示。2、在QQ

    2022年12月31 227
  • 怎么没有声音,手机一直没有声音

    音响突然没有声音了怎么办?我们可以从线的接触等各方面原因一一排查。1.插座接触不良、信号线接触不良。检查声音是否通电,每条信号线接触良好。如果您使用的是华为手机,手机外放无声音,可以通过以下方法进行排

    2023年01月15 296
  • 怎样查联通套餐明细,10010短信怎么查套餐明细

    之前办理了靓号,10010短信怎么查套餐明细,作者因为手头上还有其他卡,这张卡就是接个验证码什么的一个月19块钱总感觉不太划算,所以就开始找各种方法可以改的最低套餐,昨天刚到手激活完第一件事情就去联系

    2023年01月05 275
  • 微信怎样识别仙人跳,怎么从微信判断是不是仙人跳

    宅在家里百无聊赖的你正在玩手机突然有个“性感美眉”加你微信、QQ还邀请你视频聊天聊了没几句漂亮美眉开始邀请你“坦诚相见”哎哟,你的小心脏是不是怦怦直跳邂逅了一场艳遇殊不知你已掉入一场“香艳陷阱”——“

    2023年01月07 241
  • 怎样查找ip地址,如何查看本机IP地址

    1、电脑IP地址是什么?电脑IP地址是什么?IP是英文InternetProtocol的缩写,如何查看本机IP地址,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。IP是

    2022年12月27 207
  • ai文件怎么打开

    图1:新建Illustrator文件图2:保存文件图3:修改EPS选项第四步,现在我们回到CorelDRAWX8中,先新建一个项目。图4:在CorelDRAWX8新建项目第五步,在CorelDRAW的

    2023年01月09 292
  • 魔兽世界怎么赚钱,魔兽世界怎么搬砖赚钱

    有很多人问有没有可以靠搬砖赚钱的游戏项目?这种问题,小白问得其实挺多的,几句话又说不清,那么就挑一款最稳定的游戏展开说一说!首先,游戏搬砖是什么?它指的是玩家通过大量时间,利用人工或者脚本去游戏里面获

    2023年01月11 215
关注微信