这是昨天的帖子http://topic.csdn.net/u/20120628/19/76fc0ff8-9ced-49cc-8f7d-363a1c7eb792.html
昨天我改过后运行下,还是好使的,可是今天又不好使了Server部分的信息发送不出去这里是改后的代码
package ex30;import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.Date;
import java.awt.event.*;public class Ex30_12Server extends JFrame{
private JTextArea jtaDisplay = new JTextArea();
private JTextArea jtaServer = new JTextArea();
private PrintWriter output;
private BufferedReader in;
private String sendMessage = "";
public static void main(String[] args) {
// TODO 自动生成方法存根
new Ex30_12Server();
}
public Ex30_12Server(){
setLayout(new GridLayout(2, 1, 5, 5));
jtaDisplay.setEditable(false);
jtaDisplay.setBorder(BorderFactory.createTitledBorder(
"Server to Client"));
jtaServer.setBorder(BorderFactory.createTitledBorder(
"Server"));
add(new JScrollPane(jtaDisplay));
add(new JScrollPane(jtaServer));
setTitle("Ex30_12Server");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try{
ServerSocket serverSocket = new ServerSocket(8000);
while(true){
MutiUser mu = new MutiUser(serverSocket.accept());
mu.start();
}
}
catch(Exception ex){
System.err.print(ex);
}
jtaServer.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.out.println("空白");
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
System.out.println("空白");
sendMessage = jtaServer.getText();
System.out.println(sendMessage);
jtaServer.setText("");
if(!sendMessage.isEmpty()){
System.out.println(sendMessage);
output.println(sendMessage);
output.flush();
}
else{
System.out.println("空白");
}
}
}
});
}
// Define the thread class for send message
class SendTask implements Runnable{
private Socket socket;
public SendTask(Socket socket){
this.socket = socket;
}
public void run(){
while(true){
InetAddress inetAddress = socket.getInetAddress();
if(!sendMessage.isEmpty()){
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(sendMessage + "\n");
sendMessage = "";
}
}
}
}
// Define the thread class for receive message
class ReceiveTask implements Runnable{
private Socket socket;
public ReceiveTask(Socket socket){
this.socket = socket;
}
public void run(){
try{
while(true){
String receiveMessage = in.readLine();
if(!receiveMessage.isEmpty()){
InetAddress inetAddress = socket.getInetAddress();
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(receiveMessage + "\n");
}
}
}
catch(IOException ex){
System.err.println(ex);
}
}
}
// 为实现多人聊天,设计的线程类
class MutiUser extends Thread{
private Socket client;
public MutiUser(Socket client){
this.client = client;
}
public void run(){
try{
output = new PrintWriter(client.getOutputStream());
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
new Thread(new SendTask(client)).start();
new Thread(new ReceiveTask(client)).start();
}
catch(Exception ex){
System.err.println(ex);
}
}
}
}
package ex30;import java.awt.*;
import java.awt.event.*;import javax.swing.*;
import java.util.*;
import java.io.*;
import java.net.*;public class Ex30_12Client extends JFrame{
private JTextArea jtaDisplay = new JTextArea();
private JTextArea jtaClient = new JTextArea();
private PrintWriter output;
private BufferedReader in;
private String sendMessage = "";
boolean flag = false;
public Ex30_12Client(){
setLayout(new GridLayout(2, 1, 5, 5));
jtaDisplay.setEditable(false);
jtaDisplay.setBorder(BorderFactory.createTitledBorder(
"Client to Server"));
jtaClient.setBorder(BorderFactory.createTitledBorder(
"Client"));
add(new JScrollPane(jtaDisplay));
add(new JScrollPane(jtaClient));
setTitle("Ex30_12Client");
setSize(500, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try{
Socket socket = new Socket(InetAddress.getLocalHost(), 8000);
output = new PrintWriter(socket.getOutputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new Thread(new SendTask(socket)).start();
new Thread(new ReceiveTask(socket)).start();
}
catch (Exception ex){
System.err.println(ex);
}
jtaClient.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendMessage = jtaClient.getText();
jtaClient.setText("");
if(!sendMessage.isEmpty()){
output.println(sendMessage);
output.flush();
}
}
}
});
}
public static void main(String[] args) {
// TODO 自动生成方法存根
new Ex30_12Client();
}
// Define the thread class for send message
class SendTask implements Runnable{
private Socket socket;
public SendTask(Socket socket){
this.socket = socket;
}
public void run(){
while(true){
InetAddress inetAddress = socket.getInetAddress();
if(!sendMessage.isEmpty()){
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(sendMessage + "\n");
sendMessage = "";
}
}
}
}
// Define the thread class for receive message
class ReceiveTask implements Runnable{
private Socket socket;
public ReceiveTask(Socket socket){
this.socket = socket;
}
public void run(){
try{
while(true){
String receiveMessage = in.readLine();
if(!receiveMessage.isEmpty()){
InetAddress inetAddress = socket.getInetAddress();
if(!receiveMessage.isEmpty()){
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(receiveMessage + "\n");
}
}
}
}
catch(IOException ex){
System.err.println(ex);
}
}
}
}
这部分真是好事多磨,感觉总是做不好
昨天我改过后运行下,还是好使的,可是今天又不好使了Server部分的信息发送不出去这里是改后的代码
package ex30;import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.Date;
import java.awt.event.*;public class Ex30_12Server extends JFrame{
private JTextArea jtaDisplay = new JTextArea();
private JTextArea jtaServer = new JTextArea();
private PrintWriter output;
private BufferedReader in;
private String sendMessage = "";
public static void main(String[] args) {
// TODO 自动生成方法存根
new Ex30_12Server();
}
public Ex30_12Server(){
setLayout(new GridLayout(2, 1, 5, 5));
jtaDisplay.setEditable(false);
jtaDisplay.setBorder(BorderFactory.createTitledBorder(
"Server to Client"));
jtaServer.setBorder(BorderFactory.createTitledBorder(
"Server"));
add(new JScrollPane(jtaDisplay));
add(new JScrollPane(jtaServer));
setTitle("Ex30_12Server");
setSize(500, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try{
ServerSocket serverSocket = new ServerSocket(8000);
while(true){
MutiUser mu = new MutiUser(serverSocket.accept());
mu.start();
}
}
catch(Exception ex){
System.err.print(ex);
}
jtaServer.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.out.println("空白");
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
System.out.println("空白");
sendMessage = jtaServer.getText();
System.out.println(sendMessage);
jtaServer.setText("");
if(!sendMessage.isEmpty()){
System.out.println(sendMessage);
output.println(sendMessage);
output.flush();
}
else{
System.out.println("空白");
}
}
}
});
}
// Define the thread class for send message
class SendTask implements Runnable{
private Socket socket;
public SendTask(Socket socket){
this.socket = socket;
}
public void run(){
while(true){
InetAddress inetAddress = socket.getInetAddress();
if(!sendMessage.isEmpty()){
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(sendMessage + "\n");
sendMessage = "";
}
}
}
}
// Define the thread class for receive message
class ReceiveTask implements Runnable{
private Socket socket;
public ReceiveTask(Socket socket){
this.socket = socket;
}
public void run(){
try{
while(true){
String receiveMessage = in.readLine();
if(!receiveMessage.isEmpty()){
InetAddress inetAddress = socket.getInetAddress();
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(receiveMessage + "\n");
}
}
}
catch(IOException ex){
System.err.println(ex);
}
}
}
// 为实现多人聊天,设计的线程类
class MutiUser extends Thread{
private Socket client;
public MutiUser(Socket client){
this.client = client;
}
public void run(){
try{
output = new PrintWriter(client.getOutputStream());
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
new Thread(new SendTask(client)).start();
new Thread(new ReceiveTask(client)).start();
}
catch(Exception ex){
System.err.println(ex);
}
}
}
}
package ex30;import java.awt.*;
import java.awt.event.*;import javax.swing.*;
import java.util.*;
import java.io.*;
import java.net.*;public class Ex30_12Client extends JFrame{
private JTextArea jtaDisplay = new JTextArea();
private JTextArea jtaClient = new JTextArea();
private PrintWriter output;
private BufferedReader in;
private String sendMessage = "";
boolean flag = false;
public Ex30_12Client(){
setLayout(new GridLayout(2, 1, 5, 5));
jtaDisplay.setEditable(false);
jtaDisplay.setBorder(BorderFactory.createTitledBorder(
"Client to Server"));
jtaClient.setBorder(BorderFactory.createTitledBorder(
"Client"));
add(new JScrollPane(jtaDisplay));
add(new JScrollPane(jtaClient));
setTitle("Ex30_12Client");
setSize(500, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try{
Socket socket = new Socket(InetAddress.getLocalHost(), 8000);
output = new PrintWriter(socket.getOutputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new Thread(new SendTask(socket)).start();
new Thread(new ReceiveTask(socket)).start();
}
catch (Exception ex){
System.err.println(ex);
}
jtaClient.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendMessage = jtaClient.getText();
jtaClient.setText("");
if(!sendMessage.isEmpty()){
output.println(sendMessage);
output.flush();
}
}
}
});
}
public static void main(String[] args) {
// TODO 自动生成方法存根
new Ex30_12Client();
}
// Define the thread class for send message
class SendTask implements Runnable{
private Socket socket;
public SendTask(Socket socket){
this.socket = socket;
}
public void run(){
while(true){
InetAddress inetAddress = socket.getInetAddress();
if(!sendMessage.isEmpty()){
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(sendMessage + "\n");
sendMessage = "";
}
}
}
}
// Define the thread class for receive message
class ReceiveTask implements Runnable{
private Socket socket;
public ReceiveTask(Socket socket){
this.socket = socket;
}
public void run(){
try{
while(true){
String receiveMessage = in.readLine();
if(!receiveMessage.isEmpty()){
InetAddress inetAddress = socket.getInetAddress();
if(!receiveMessage.isEmpty()){
jtaDisplay.append(inetAddress.getHostName() + "\t" + new Date() + "\n");
jtaDisplay.append(receiveMessage + "\n");
}
}
}
}
catch(IOException ex){
System.err.println(ex);
}
}
}
}
这部分真是好事多磨,感觉总是做不好
jtaServer.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
System.out.println("123");
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendMessage = jtaServer.getText();
jtaServer.setText("");
if (!sendMessage.isEmpty()) {
System.out.println(sendMessage);
output.println(sendMessage);
output.flush();
} else {
}
}
}
});
try {
ServerSocket serverSocket = new ServerSocket(8000); while (true) {
MutiUser mu = new MutiUser(serverSocket.accept());
mu.start();
}
} catch (Exception ex) {
System.err.print(ex);
}
再加一个client就占CPU 100%了,为什么这么耗CPU,有没有改进的方法
http://topic.csdn.net/u/20120710/14/f145a2b7-7926-421a-bc41-9ba967812e55.html