亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

2021手機(jī)qq創(chuàng)建討論組 qq如何創(chuàng)建多人聊天不是群聊( 二 )


name = receive();
} catch (IOException e) {
relese();
}
try {
dos = new DataOutputStream(client.getOutputStream());
} catch (IOException e) {
relese();
}
}
// 接收消息
private String receive() {
String msg = “”;
try {
msg = dis.readUTF();
} catch (IOException e) {
relese();
}
return msg;
}
// 發(fā)送消息
private void send(String msg) {
try {
dos.writeUTF(msg);
} catch (IOException e) {
relese();
}
}
// 群聊,發(fā)給別人
private void sendOthers(String msg) {
// 私聊格式@XXX:這里是找到以@開頭的信息
if (msg.startsWith(“@”)) {
int idx = msg.indexOf(“:”);
String targetName = msg.substring(1, idx);
msg = msg.substring(idx + 1);
for (Channel other : list) {
if (other.name.equals(targetName)) {
other.send(this.name + “:” + msg);
}
}
} else {
for (Channel other : list) {
if (other == this) {
continue;
} else {
other.send(this.name + “:” + msg);
}
}
}
}
// 釋放資源
private void relese() {
this.isRunning = false;
//這里的Util是自定義的一個(gè)類
Util.close(dis, dos, client);
}
@Override
public void run() {
while (isRunning) {
String msg = receive();
if (!msg.equals(“”)) {
sendOthers(msg);
}
}
}
}
}
(由于從JDK中復(fù)制過來的代碼格式會(huì)被平臺(tái)調(diào)整,所以這里照齊上可能不太好看 。)
客戶端客戶端中用到了接收信息、發(fā)送信息以及釋放資源
package com.TCP;
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(“—Client—“);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“請(qǐng)輸入用戶名”);
String name = br.readLine();
// 建立連接,使用Socket創(chuàng)建連接,括號(hào)內(nèi)置服務(wù)器的地址和端口
Socket client = new Socket(“localhost”, 12345);
// 客戶端發(fā)送消息
new Thread(new Send(client, name)).start();
new Thread(new Receive(client)).start();
}
}
(由于從JDK中復(fù)制過來的代碼格式會(huì)被平臺(tái)調(diào)整,所以這里照齊上可能不太好看 。)
在實(shí)現(xiàn)客戶端的時(shí)候,我這里是在控制臺(tái)輸入的信息,也可以進(jìn)行跨級(jí)聊天,但前提是要在同一個(gè)局域網(wǎng)內(nèi),對(duì)于客戶端來說,需要客服端進(jìn)行發(fā)送信息和接收信息,首先看看接收信息吧
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;
//這里是傳過來了一個(gè)客戶端對(duì)象,并獲得了輸入流對(duì)象
public Receive(Socket client) {
this.client = client;
try {
dis = new DataInputStream(client.getInputStream());
isRunning = true;
} catch (IOException e) {
release();
}
}
//這里是實(shí)現(xiàn)了獲取信息
private String receive() {
String msg = “”;
try {
msg = dis.readUTF();
} catch (IOException e) {
release();
}
return msg;
}
//這是重寫了run方法,實(shí)現(xiàn)多線程,也就是多個(gè)客戶端都能與服務(wù)器打交道
@Override
public void run() {
while (isRunning) {
String msg = receive();


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: