java开发qq群机器人_怎么用java开发qq群机器人 服务端 客户端?

getServerThreads() {

return serverThreads;

}

public void setServerThreads(ListserverThreads) {

this.serverThreads = serverThreads;

}

public ServerSocket getServerSocket() {

return serverSocket;

}

public void setServerSocket(ServerSocket serverSocket) {

this.serverSocket = serverSocket;

}

public static void main(String[] args) {

Server server = null;

try {

server = new Server();

} catch (IOException e) {

e.printStackTrace();

System.exit(-1);

}

try {

Socket socket;

Thread t;

while (true) {

socket = server.getServerSocket().accept();

ServerThread serverThread = new ServerThread(server, socket);

server.getServerThreads().add(serverThread);

t = new Thread(serverThread);

t.start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

public void sendMessage(String message, Socket socket) {

for (ServerThread serverThread : serverThreads) {

try {

serverThread.getDos().writeUTF(message);

} catch (IOException e) {

// e.printStackTrace();

System.out.println("推送消息给" + serverThread.getSocket().getRemoteSocketAddress() + "过程中发生了错误.");

}

}

}

}

class ServerThread implements Runnable {

private Server server;

private Socket socket;

private DataInputStream dis;

private DataOutputStream dos;

public ServerThread(Server server, Socket socket) throws IOException {

this.server = server;

this.socket = socket;

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

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

}

public Server getServer() {

return server;

}

public void setServer(Server server) {

this.server = server;

}

public Socket getSocket() {

return socket;

}

public void setSocket(Socket socket) {

this.socket = socket;

}

public DataInputStream getDis() {

return dis;

}

public void setDis(DataInputStream dis) {

this.dis = dis;

}

public DataOutputStream getDos() {

return dos;

}

public void setDos(DataOutputStream dos) {

this.dos = dos;

}

public void run() {

String message = "";

while (!message.equals("logout")) {

try {

message = socket.getRemoteSocketAddress() + " say: " + dis.readUTF();

// System.out.println(message);

server.sendMessage(message, socket);

} catch (IOException e) {

//e.printStackTrace();

break;

}

}

server.getServerThreads().remove(this);

try {

dis.close();

dos.close();

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}Client.java

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.Socket;

import java.net.UnknownHostException;

import java.util.Scanner;

public class Client {

private Socket socket;

private DataOutputStream dos;

private DataInputStream dis;

public Client() throws UnknownHostException, IOException {

socket = new Socket("127.0.0.1", 8025);

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

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

new Thread(new ClientThread(this)).start();

}

public Socket getSocket() {

return socket;

}

public void setSocket(Socket socket) {

this.socket = socket;

}

public DataOutputStream getDos() {

return dos;

}

public void setDos(DataOutputStream dos) {

this.dos = dos;

}

public DataInputStream getDis() {

return dis;

}

public void setDis(DataInputStream dis) {

this.dis = dis;

}

public void close() {

try {

dis.close();

dos.close();

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

private void sendMessage(String message) {

try {

dos.writeUTF(message);

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

Client client = null;

try {

client = new Client();

System.out.println(client.getSocket().getLocalPort());

} catch (IOException e) {

System.out.println("BUG");

e.printStackTrace();

System.exit(-1);

}

String message = "";

Scanner scanner = new Scanner(System.in);

while (!message.equals("logout")) {

message = scanner.nextLine();

// System.out.println(message);

client.sendMessage(message);

}

scanner.close();

client.close();

}

}

class ClientThread implements Runnable {

private Client client;

public ClientThread(Client client) {

super();

this.client = client;

}

@Override

public void run() {

try {

while (true) {

System.out.println(client.getDis().readUTF());

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值