当前位置:编程学习 > JAVA >>

钻研一个别人的模仿聊天窗口的 帖子,可是报错了 球大神指点!!!没钱了 存翠学知识来的

代码部分一:

package client.thread;

import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import client.thread.ClientReadThread;

public class ClientUI {

public TextArea area1 = null;
public TextArea area2 = null;
public TextField name;
public static String ID = null ;

DataOutputStream  pw = null;
public  ClientUI(){
Frame frame = new Frame(" ");//初始化frame窗体
frame.setSize(520, 560);
frame.setResizable(false);
FlowLayout layout = new FlowLayout(FlowLayout.LEFT,0,5);//新建流式布局
Panel panel1 = new Panel();//初始化面板
panel1.setLayout(layout);
area1 = new TextArea(25,70);
area2 = new TextArea(5,70);
Button button = new Button("发送");
panel1.add(area1);
panel1.add(area2);
panel1.add(button);
frame.add(panel1);

//让用户填写聊天用的昵称
final Dialog logindialog = new Dialog(frame);
logindialog.setSize(250, 150);
Panel panel2 = new Panel();
Label label2 = new Label("\r\n======请填写您在聊天中的昵称:======");
Label label3 = new Label("  昵称:");
name = new TextField(18);
Button button2 = new Button("提交");

panel2.add(label2);
panel2.add(label3);
panel2.add(name);
panel2.add(button2);
logindialog.add(panel2);


logindialog.setVisible(true);
panel1.setVisible(true);
frame.setVisible(true);

button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
String line = area2.getText();
area2.setText("");
while(line!=""&&line!=null){
try {
pw.writeUTF("【"+ID+"】"+" :"+line);
pw.flush();
break;
} catch (IOException e1) {
e1.printStackTrace();
}
}

}

});

button2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
ID = name.getText();
area1.setText("【"+ID+"】 已进入聊天室\r\n\r\n");
logindialog.dispose();
}
});

logindialog.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
logindialog.dispose();
}
});

frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}


public void sendMsg(String ip,int port) throws Exception{
Socket soc = new Socket(ip,port);
pw = new DataOutputStream(new BufferedOutputStream(soc.getOutputStream()));
Thread read = new ClientReadThread(soc, area1,ID);
read.start();
}

public static void main(String[] args) {
ClientUI c = new ClientUI();
while(ID==null){
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}//等待用户填写昵称(即ID)
try {
c.sendMsg("127.0.0.1",2525);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

代码部分2:
package client.thread;

import java.awt.TextArea;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;

public  class ClientReadThread extends Thread{

Socket socket ;
TextArea area;
String id ;

public ClientReadThread(Socket socket ,TextArea area,String id){
this.socket = socket ;
this.area = area;
this.id = id;
}
@Override
public void run() {
DataInputStream br = null;
try {
String line = null;
br = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
while(br!=null){ 
line = br.readUTF();
if(line!=null){
area.setText(area.getText()+"\r\n"+line);
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

报错:
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:180)
at client.thread.ClientUI.sendMsg(ClientUI.java:108)
at client.thread.ClientUI.main(ClientUI.java:125)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at client.thread.ClientUI$1.actionPerformed(ClientUI.java:72)
at java.awt.Button.processActionEvent(Button.java:392)
at java.awt.Button.processEvent(Button.java:360)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)[/color]


补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,