java聊天机器人源码

正在用Java设计一个动漫DRRR中的“罪歌”聊天机器人,想问一下关于代码的问题。

使用System.out是不能无限刷屏的,否则会导致用户无法输入。

输入几个字屏幕就被换行,肯定玩玩。

不过如果是画面形式,当然就无所谓了。

java聊天机器人源码

想做一个想小i机器人一样的自动回复程序,用java语言写

ServerSocket ss = null;

Socket socket = ss.accept();

DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//向客户端发送数据的输出流

DataInputStream dis = new DataInputStream(socket.getInputStream());//收客户端发来的数据的输入流

只要接收到的dis.readUTF())值

dos.writeUTF(“自动回复的值”);

JAVA设计一个人工智能的机器人

java机器人游戏最经典的是Robocode项目,里面有详细的文档以及源码,可以自己学习修改。(不要说自己参加这个项目,自己不认真学些东西,那可以面壁了)。下面是它的项目主页

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

Server.java

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;

public class Server {

private ListServerThread serverThreads;

private ServerSocket serverSocket;

public Server() throws IOException {

serverSocket = new ServerSocket(8025);

serverThreads = new ArrayListServerThread();

}

public ListServerThread getServerThreads() {

return serverThreads;

}

public void setServerThreads(ListServerThread serverThreads) {

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();

}

}

}

java 聊天室 源代码

【ClientSocketDemo.java 客户端Java源代码】

import java.net.*;

import java.io.*;

public class ClientSocketDemo

{

//声明客户端Socket对象socket

Socket socket = null;

//声明客户器端数据输入输出流

DataInputStream in;

DataOutputStream out;

//声明字符串数组对象response,用于存储从服务器接收到的信息

String response[];

//执行过程中,没有参数时的构造方法,本地服务器在本地,取默认端口10745

public ClientSocketDemo()

{

try

{

//创建客户端socket,服务器地址取本地,端口号为10745

socket = new Socket(“www.easyaq.com”,10745);

//创建客户端数据输入输出流,用于对服务器端发送或接收数据

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

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

//获取客户端地址及端口号

String ip = String.valueOf(socket.getLocalAddress());

String port = String.valueOf(socket.getLocalPort());

//向服务器发送数据

out.writeUTF(“Hello Server.This connection is from client.”);

out.writeUTF(ip);

out.writeUTF(port);

//从服务器接收数据

response = new String[3];

for (int i = 0; i response.length; i++)

{

response[i] = in.readUTF();

System.out.println(response[i]);

}

}

catch(UnknownHostException e){e.printStackTrace();}

catch(IOException e){e.printStackTrace();}

}

//执行过程中,有一个参数时的构造方法,参数指定服务器地址,取默认端口10745

public ClientSocketDemo(String hostname)

{

try

{

//创建客户端socket,hostname参数指定服务器地址,端口号为10745

socket = new Socket(hostname,10745);

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

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

String ip = String.valueOf(socket.getLocalAddress());

String port = String.valueOf(socket.getLocalPort());

out.writeUTF(“Hello Server.This connection is from client.”);

out.writeUTF(ip);

out.writeUTF(port);

response = new String[3];

for (int i = 0; i response.length; i++)

{

response[i] = in.readUTF();

System.out.println(response[i]);

}

}

catch(UnknownHostException e){e.printStackTrace();}

catch(IOException e){e.printStackTrace();}

}

//执行过程中,有两个个参数时的构造方法,第一个参数hostname指定服务器地址

//第一个参数serverPort指定服务器端口号

public ClientSocketDemo(String hostname,String serverPort)

{

try

{

socket = new Socket(hostname,Integer.parseInt(serverPort));

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

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

String ip = String.valueOf(socket.getLocalAddress());

String port = String.valueOf(socket.getLocalPort());

out.writeUTF(“Hello Server.This connection is from client.”);

out.writeUTF(ip);

out.writeUTF(port);

response = new String[3];

for (int i = 0; i response.length; i++)

{

response[i] = in.readUTF();

System.out.println(response[i]);

}

}

catch(UnknownHostException e){e.printStackTrace();}

catch(IOException e){e.printStackTrace();}

}

public static void main(String[] args)

{

String comd[] = args;

if(comd.length == 0)

{

System.out.println(“Use www.easyaq.com(127.0.0.1) and default port”);

ClientSocketDemo demo = new ClientSocketDemo();

}

else if(comd.length == 1)

{

System.out.println(“Use default port”);

ClientSocketDemo demo = new ClientSocketDemo(args[0]);

}

else if(comd.length == 2)

{

System.out.println(“Hostname and port are named by user”);

ClientSocketDemo demo = new ClientSocketDemo(args[0],args[1]);

}

else System.out.println(“ERROR”);

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

【ServerSocketDemo.java 服务器端Java源代码】

import java.net.*;

import java.io.*;

public class ServerSocketDemo

{

//声明ServerSocket类对象

ServerSocket serverSocket;

//声明并初始化服务器端监听端口号常量

public static final int PORT = 10745;

//声明服务器端数据输入输出流

DataInputStream in;

DataOutputStream out;

//声明InetAddress类对象ip,用于获取服务器地址及端口号等信息

InetAddress ip = null;

//声明字符串数组对象request,用于存储从客户端发送来的信息

String request[];

public ServerSocketDemo()

{

request = new String[3]; //初始化字符串数组

try

{

//获取本地服务器地址信息

ip = InetAddress.getLocalHost();

//以PORT为服务端口号,创建serverSocket对象以监听该端口上的连接

serverSocket = new ServerSocket(PORT);

//创建Socket类的对象socket,用于保存连接到服务器的客户端socket对象

Socket socket = serverSocket.accept();

System.out.println(“This is server:”+String.valueOf(ip)+PORT);

//创建服务器端数据输入输出流,用于对客户端接收或发送数据

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

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

//接收客户端发送来的数据信息,并显示

request[0] = in.readUTF();

request[1] = in.readUTF();

request[2] = in.readUTF();

System.out.println(“Received messages form client is:”);

System.out.println(request[0]);

System.out.println(request[1]);

System.out.println(request[2]);

//向客户端发送数据

out.writeUTF(“Hello client!”);

out.writeUTF(“Your ip is:”+request[1]);

out.writeUTF(“Your port is:”+request[2]);

}

catch(IOException e){e.printStackTrace();}

}

public static void main(String[] args)

{

ServerSocketDemo demo = new ServerSocketDemo();

}

}

请问能不能帮我写一个Java的聊天窗口文件源代码,不要很复杂,只要能运行,聊天就行了!我用淘宝金币换,谢

话说网上真的好多啊…

package client;

import java.awt.Color;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.Socket;

import java.util.Date;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class ClientFrame extends JFrame{

private JTextArea allmsg;

private JTextField welcome,copyright,chatmsg;

private JButton send;

private JScrollPane js;

private boolean isConnected = true;

public DataOutputStream out;

public DataInputStream in;

public Socket s = null;

String nic; /* — 保存用户昵称 –*/

/**

* 初始化客户端资源

* 1.获取从LoginFrame传递过来的参数

* 2.初始化界面元素

* 3.初始化通信所需要的资源 EG:输入/输出流(DataInputStream/DataOutputStream)

* */

public ClientFrame(String name,Socket socket)

{

this.setSize(310,660);

this.setLocation(290,50);

this.setTitle(“聊天室客户端”+name+””);/* — 指定窗口的标题 –*/

this.s = socket;/* — 接收从LoginFrame中传递过来的Socket –*/

this.nic = name+” 说: “;

welcome = new JTextField(” “+name+” 欢迎您来到聊天室 “,100);

welcome.setBackground(Color.blue);

welcome.setEnabled(false);

copyright = new JTextField(” —– all copyright @ TOP-king —–“);

copyright.setEnabled(false);

allmsg = new JTextArea();

allmsg.setEditable(false);

allmsg.append(” 系统消息: 欢迎登录在线聊天室 \n”);

js = new JScrollPane(allmsg);//为JTextArea添加滚动条

chatmsg = new JTextField(“在此输入聊天信息”);

chatmsg.addActionListener(new listen());

send = new JButton(“发送”);

send.addActionListener(new listen());/* — 添加事件监听器 –*/

try {

out = new DataOutputStream(s.getOutputStream());

in = new DataInputStream(s.getInputStream());

} catch (IOException e) {JOptionPane.showMessageDialog(null, “系统异常”,”错误”,JOptionPane.OK_CANCEL_OPTION);}

addcomponettocontainer();

/* — 当用户关闭窗口时进行相关的处理 eg:Socket Data(Input/Output)Stream 的关闭–*/

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we)

{

sendmsg(“quitlogout”);/* — 向服务器端发送关闭信息 –*/

isConnected = false;

destory();/* — 销毁窗口资源 –*/

}

});

new Thread(new linread()).start();/* — 启动读取信息线程 –*/

}

public void addcomponettocontainer()

{

Container c = this.getContentPane();

c.setLayout(null);

welcome.setBounds(75,10,150,20);

js.setBounds(10,50,280,500);

chatmsg.setBounds(10,560,180,30);

send.setBounds(220,560,70,30);

copyright.setBounds(10,600,280,20);

c.add(welcome);

c.add(js);

c.add(chatmsg);

c.add(send);

c.add(copyright);

this.setVisible(true);

this.setResizable(false);

}

class listen implements ActionListener

{

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getSource()==send||e.getSource()==chatmsg)

{

String msg = chatmsg.getText().trim();

if(“”.equals(msg))

{

JOptionPane.showMessageDialog(null,”发送信息不能为空!”,”错误”,JOptionPane.OK_OPTION);

}

else

{sendmsg((new Date()).toLocaleString()+”\n”+nic+msg+”\n”);chatmsg.setText(“”);}

}

}

}

/* — 向服务器端发送信息 –*/

public void sendmsg(String m)

{

if(isConnected)//如果socket的输出流没关闭

{

try {

out.writeUTF(m);

} catch (IOException e) {

JOptionPane.showMessageDialog(null,”发送信息失败!(系统异常)”,”错误”,JOptionPane.OK_OPTION);

}

}

else

{

JOptionPane.showMessageDialog(null,”发送信息失败!(服务器关闭/网络故障)”,”错误”,JOptionPane.OK_OPTION);

}

}

/* — 读取信息线程 –*/

class linread implements Runnable

{

public void run()

{

read();

}

public void read()

{

while(isConnected)

{

try {

String msg = in.readUTF();

if(“SYSTEM_CLOSED”.equals(msg))

{

JOptionPane.showMessageDialog(null,”读取消息失败(服务器关闭/网络故障)!”,”错误”,JOptionPane.OK_OPTION);

isConnected = false;

}

else

allmsg.append(msg+”\n”);

} catch (IOException e) {

}

}//end while

JOptionPane.showMessageDialog(null,”读取消息失败(服务器关闭/网络故障)!”,”错误”,JOptionPane.OK_OPTION);

}//end read()

}

public void destory()

{

try {

this.out.close();

this.in.close();

this.s.close();

} catch (IOException e) {

}

this.dispose();

}

}

======================================================

package client;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

public class LoginFrame extends JFrame{

private JTextField name;

private JTextField ip;

private JButton ok,cancle;

public Socket socket;

public LoginFrame()

{

super(“登录框”);

this.setSize(400,80);

this.setLocation(100,100);

name = new JTextField(“昵称”);

ip = new JTextField(“127.0.0.1”);

ok = new JButton(“登录”);

cancle = new JButton(“取消”);

ok.addActionListener(new listenEvent());

cancle.addActionListener(new listenEvent());

//建立容器

addcomponettocontainer();

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

/**

* 建立容器及控件

*/

public void addcomponettocontainer()

{

Container c = this.getContentPane();

c.setLayout(null);

name.setBounds(10,10,100,30);

ip.setBounds(120,10,100,30);

ok.setBounds(230,10,70,30);

cancle.setBounds(310,10,70,30);

c.add(name);

c.add(ip);

c.add(ok);

c.add(cancle);

this.setVisible(true);

this.setResizable(false);

}

public class listenEvent implements ActionListener

{

public void actionPerformed(ActionEvent event) {

// TODO Auto-generated method stub

if(event.getSource()==ok)

{

String n = name.getText().trim();

String i = ip.getText().trim();

if(“”.equals(n)||””.equals(i))

{

JOptionPane.showMessageDialog(null,”昵称、IP不能够为空!”,”错误”,JOptionPane.OK_OPTION);

}

else{login(n,i);}

}

if(event.getSource()==cancle)

{

name.setText(“”);

ip.setText(“”);

}

}

}

/**

* 进行登录

* @param name

* @param ip

*/

public void login(String name,String ip)

{

try {

socket = new Socket(ip,7777);

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

out.writeUTF(name);

out.flush();//强制输出缓存中的内容

//out.close();

new ClientFrame(name,socket);

destroywindow();

} catch (UnknownHostException e) {

JOptionPane.showMessageDialog(null,”找不到主机地址(IP错误/网络故障)!”,”错误”,JOptionPane.OK_OPTION);

} catch (IOException e) {

}

}

public void destroywindow()

{

this.dispose();

}

public static void main(String[] args)

{

new LoginFrame();

}

}

==================================================

package server;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

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.Date;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

public class ServerFrame extends JFrame{

/**

*

*/

private static final long serialVersionUID = 1L;

private JTextArea allmsg;

private JTextField currnum,totalnum,copyright,chatmsg;

private JButton send;

private JScrollPane js;

int num1,num2,port;/* — num1:当前在线人数 num2:总上线人数 port:服务端口号 –*/

private ServerSocket ss;

ArrayListuser lists;//存放所有在线用户

public ServerFrame()

{

super(“聊天室服务器端”);

this.setSize(310,660);

this.setLocation(200,50);

lists = new ArrayListuser();

num1 = num2 =0;

port = 7777;

currnum = new JTextField(” 当前在线人数: “+num1);

currnum.setEnabled(false);

totalnum = new JTextField(” 上线总人数: “+num2);

totalnum.setEnabled(false);

copyright = new JTextField(” —– all copyright @ TOP-king —–“);

copyright.setEnabled(false);

allmsg = new JTextArea();

allmsg.append(” ————— 系统消息 ————–\n”);

allmsg.setEditable(false);

allmsg.setLineWrap(true); //允许自动换行

js = new JScrollPane(allmsg);//为JTextArea添加滚动条

chatmsg = new JTextField(“在此输入系统信息”);

chatmsg.addActionListener(new ActionListener(){

@SuppressWarnings(“deprecation”)

public void actionPerformed(ActionEvent arg0) {

String str = chatmsg.getText().trim();

if(!””.equals(str))

{sendmsg((new Date()).toLocaleString()+” — 系统消息: “+str);chatmsg.setText(“”);}

else

JOptionPane.showMessageDialog(null, “消息不能为空”,”错误”,JOptionPane.OK_OPTION);

chatmsg.setText(“”);/* — 发送信息后,将输入栏中的信息清空 — */

}

});

send = new JButton(“发送”);

send.addActionListener(new ActionListener(){

@SuppressWarnings(“deprecation”)

public void actionPerformed(ActionEvent arg0) {

String str = chatmsg.getText().trim();

if(!””.equals(str))

{sendmsg((new Date()).toLocaleString()+” — 系统消息: “+str);chatmsg.setText(“”);}

else

JOptionPane.showMessageDialog(null, “消息不能为空”,”错误”,JOptionPane.OK_OPTION);

chatmsg.setText(“”);/* — 发送信息后,将输入栏中的信息清空 — */

}

});

//建立容器

addcomponettocontainer();

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent we)

{

sendmsg(“SYSTEM_CLOSED”);/* — 向客户端发送服务器关闭信息 — */

destory();

}

});

start(); /* — 启动连接服务 — */

}

public void addcomponettocontainer()

{

//Container建立容器

Container c = this.getContentPane();

c.setLayout(null);

currnum.setBounds(20,15,130,20);

totalnum.setBounds(155,15,125,20);

js.setBounds(10,50,280,500);

chatmsg.setBounds(10,560,180,30);

send.setBounds(220,560,70,30);

copyright.setBounds(10,600,280,20);

c.add(currnum);

c.add(totalnum);

c.add(js);

c.add(chatmsg);

c.add(send);

c.add(copyright);

this.setVisible(true);

this.setResizable(false);

}

/**

* start()方法监听客户的连接

* 并且保存客户端的相关信息EG:用户昵称、用户所使用的Socket

* 用户连接到服务器成功之后,将其保存到用户列表中,并为该用户启动一个线程用于通信 */

@SuppressWarnings(“deprecation”)

public void start()

{

boolean isStarted = false;/* — 用于标记服务器是否已经正常启动 — */

try {

this.ss = new ServerSocket(port);

isStarted = true;

this.allmsg.append((new Date()).toLocaleString()+” 服务器启动 @ 端口: “+port+”\n”);

while(isStarted)

{

Socket client = this.ss.accept(); /* — 监听客户端的连接 — */

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

String name = in.readUTF();

user u = new user();

u.name = name;

u.socket = client;

lists.add(u); //将该用户加到列表中去

num1++;

num2++;

currnum.setText(” 当前在线人数: “+num1);

totalnum.setText(” 上线总人数: “+num2);

this.allmsg.append((new Date()).toLocaleString()+” : “+u.name+” 登录 \n”);

new Thread(new ClientThread(u)).start();/* — 为该用户启动一个通信线程 — */

}

} catch (IOException e) {

System.out.println(“服务器已经启动……”);

System.exit(0);

}

}

/**

* 通信线程主要功能包括:

* 1.监听客户端输入的信息

* 2.将接收到的信息转发给其他用户 */

class ClientThread implements Runnable

{

user user = null;

boolean isConnected = true;

DataInputStream dis = null;

DataOutputStream dos = null;

public ClientThread(user u)

{

this.user = u;

try {

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

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

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void run()

{

readmsg();

}

/* — 读取客户的聊天信息 — */

@SuppressWarnings(“deprecation”)

public void readmsg()

{

while(isConnected)

{

try {

String msg = dis.readUTF();

if(“quitlogout”.equals(msg))//当用户关闭客户端窗口时,发送quit字符串 表示用户已经退出

{

num1–;

try{

this.dis.close();

this.dos.close();

this.user.socket.close();

this.isConnected = false;

}catch(IOException ioe)

{

ioe.printStackTrace();

}finally{

this.isConnected = false;

if(dis!=null) this.dis.close();

if(dos!=null) this.dos.close();

if(this.user.socket!=null) this.user.socket.close();

}

lists.remove(this.user);//从列表中删除该用户

currnum.setText(” 当前在线人数: “+num1);

allmsg.append((new Date()).toLocaleString()+” : “+this.user.name+” 退出\n”);

}

else

sendmsg(msg);

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

/* — 将信息进行转发 — */

public void sendmsg(String msg)

{

user us = new user();

DataOutputStream os = null;

if(lists.size()0)

{

for(int i=0;ilists.size();i++)

{

us = lists.get(i);

try {

os = new DataOutputStream(us.socket.getOutputStream());

os.writeUTF(msg);

} catch (IOException e) {

e.printStackTrace();

}

}

}

else

JOptionPane.showMessageDialog(null, “当前无用户在线。发送消息失败”,”失败”,JOptionPane.OK_OPTION);

}

public void destory()

{

try {

this.ss.close();

} catch (IOException e) {

e.printStackTrace();

}

this.dispose();

}

public static void main(String[] args)

{

new ServerFrame();

}

}

=================================================

package server;

import java.net.*;

public class user {

String name;

Socket socket;

}

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 01:30:52
下一篇 2024年3月28日 01:40:11

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4400
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4200
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3400
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4700
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4300
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4200
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    4000
  • javasocket编程,Java socket编程中,禁用nagle算法的参数

    Java进行并发多连接socket编程 1、Java可利用ServerSocket类对外部客户端提供多个socket接口。基本的做法是先创建一个ServerSocket实例,并绑定一个指定的端口,然后在这个实例上调用accept()方法等待客户端的连接请求。 2、Socket socket=server.accept(0;Thread handleThrea…

    2024年5月23日
    4600
  • java死亡,java死代码是什么意思

    我的世界传送回死亡点指令是什么? 1、下面就让我们一起来了解一下吧:我的世界回到死的地方的指令是输入/back,就可以回到死亡地点了,当然也可以看信标,因为死亡后会有一道光集中在死亡点,只要循着光就可以找到目的地了。 2、在服务器中的指令 首先打开指令台,在指令行输入“/back”就可以回到自己的死亡地点了。在单人游戏中的指令 在单人游戏中,您无法直接返回到…

    2024年5月23日
    4800
  • myeclipse能部署java工程么,myeclipse支持jdk18

    myeclipse如何建java文件 1、点击【File】—【New】–【Class】在如下界面,输入Class的名字,如Test,点击【Finish】。Test.java文件创建成功。 2、点击【File】—【New】–【Class】 在如下界面,输入Class的名字,如Test,点击【Finish】。 Te…

    2024年5月23日
    3900

发表回复

登录后才能评论



关注微信