java slepp_java sleep()

展开全部

下面分别是服务器端32313133353236313431303231363533e4b893e5b19e31333238653862和客户端的代码,先运行服务器端,再运行客户端

服务器端:

import java.awt.event.*;

import java.io.*;

import java.net.*;

import java.util.*;

import java.util.List;

import javax.swing.*;

public class ChatServer {

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

ServerSocket ss = new ServerSocket(9000);

ServerFrame sf = new ServerFrame();

sf.launchFrame();

List list = new ArrayList(); // 创建数组

while (true) { // 开启多线程

Socket s = ss.accept();

list.add(s);

Thread t = new ServerThread(s, list, sf);

t.start();

}

}

}

class ServerThread extends Thread { // 创建线程类

Socket s;

BufferedReader in;

PrintWriter out;

ServerFrame sf;

public ServerThread(Socket s, List list, ServerFrame sf) {

this.s = s;

this.sf = sf;

sf.sokectList = list;

try {

in = new BufferedReader(new InputStreamReader(s.getInputStream()));

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

} catch (IOException e) {

e.printStackTrace();

}

}

public void run() {

while (true) {

try {

String str = in.readLine();

if (str == null)

continue;

sf.jta.append("接收到:" + str + "\n");

} catch (IOException e) {

return;

}

}

}

}

class ServerFrame {

List sokectList;

JTextField jtf;

JTextArea jta;

PrintWriter out;

public void launchFrame() {

JFrame frame = new JFrame("服务器端"); // 创建 frame对象

frame.setSize(400, 300); // 设置fram大小

frame.setLocation(300, 250);

jta = new JTextArea();

jta.setEditable(false);

jtf = new JTextField();

jtf.addActionListener(new ActionListener() { // 注册监听器

public void actionPerformed(ActionEvent arg0) {

send();

}

});

frame.getContentPane().add(new JScrollPane(jta));

frame.getContentPane().add(jtf, "South");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

public void send() { // 输出文字

String text = this.jtf.getText();

this.jtf.setText("");

if(sokectList==null) {

jta.append("无客户端,发送失败:" + text + "\n");

return;

}

jta.append("发送指令:" + text + "\n");

Iterator it = sokectList.iterator();

while (it.hasNext()) {

Socket socket = (Socket) (it.next());

try {

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

} catch (IOException e) {

// TODO Auto-generated catch block

jta.append("与客户端连接失败!\n");

continue;

}

out.println(text);

out.flush();

}

}

}

客户端:

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.Panel;

import java.awt.TextArea;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import javax.swing.*;

public class ChatClient {

public static void main(String[] args) {

ChatClient cc = new ChatClient();

while(true)

cc.receive();

}

static boolean boo;

Frame clientFrame;

Panel topPanel;

TextArea topTextArea;

Socket s;

BufferedReader in;

PrintWriter out;

public ChatClient() {

this.clientFrame = new Frame("客户端");

this.clientFrame.setBounds(350, 250, 150, 250);

this.clientFrame.setResizable(false);

this.clientFrame.setVisible(true);

this.topPanel = new Panel();

this.clientFrame.setBounds(350, 250, 150, 200);

this.topTextArea = new TextArea();

this.topPanel.add(this.topTextArea);

this.clientFrame.add(this.topPanel, BorderLayout.NORTH);

this.clientFrame.pack();

this.clientFrame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

int var = JOptionPane.showConfirmDialog(null, "退出?",

"退出", JOptionPane.OK_CANCEL_OPTION);

if (var == JOptionPane.OK_OPTION)

System.exit(0);

}

});

try {

s = new Socket("127.0.0.1", 9000);//设置端口

in = new BufferedReader(new InputStreamReader(s.getInputStream()));//创建对象in

out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));//创建对象out

} catch(UnknownHostException e) {//捕捉异常

e.printStackTrace();

} catch(ConnectException e) {

JOptionPane.showMessageDialog(null, "与服务器连接失败,请确认服务器是否已经开启!");

System.exit(-1);

} catch(IOException e) {

e.printStackTrace();

}

}

public void receive() { // 读信息

try {

String text = in.readLine();

if("STOP".equals(text.toUpperCase())) {

if(boo) {

this.topTextArea.append("结束发送!\n");

boo = false;

}

return;

}

if("START".equals(text.toUpperCase())) {

boo = true;

this.topTextArea.append("开始向服务器发送数据:\n");

new SendThread(this).start();

return;

}

this.topTextArea.append("接收到无效指令:" + text + "\n");

} catch (SocketException e) {

JOptionPane.showMessageDialog(null, "与服务器断开连接!");

System.exit(-1);

} catch (IOException e) {

e.printStackTrace();

return;

}

}

public void send() {

while(boo) {

String str = Math.random() + "";

out.println(str);

out.flush();

this.topTextArea.append("发送:" + str + "\n");

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

class SendThread extends Thread {

ChatClient cc;

SendThread(ChatClient cc) {

this.cc = cc;

}

@Override

public void run() {

// TODO Auto-generated method stub

cc.send();

}

}

本回答由提问者推荐

2Q==

c50d6af2748da18e06a2dc6d9597acd0.gif

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值