新手起步求大神解释聊天项目:chat客户端,server 服务端
程序目的:把客户端发送的消息传到服务器端
现在出现的问题是在server中出现java.net.SocketException: Connection reset 这个问题出现问题处有标记当我把异常处理结果(打印异常) 注(//)掉就会编译正常,不注(//)时就会出现异常为什么会出现这个问题import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;public class chat extends Frame{

DataOutputStream dos = null;
Socket s ;
TextField tfText = new TextField();
TextArea taText = new TextArea();

public static void main (String [] args){

new chat().launchFrame();
}

public void launchFrame(){
setBounds(400,150,500,450);
add(tfText,BorderLayout.SOUTH);
add(taText,BorderLayout.CENTER);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
try{
s.close();
}catch (IOException e1){
e1.printStackTrace();
}
}
});
tfText.addActionListener(new TFListener());
setVisible(true);
connect();
}

public void connect(){
try{
s = new Socket("127.0.0.1",8888);
dos = new DataOutputStream(s.getOutputStream());
}catch (UnknownHostException e){
e.printStackTrace();
}
catch (IOException e){
e.printStackTrace();
}
}

class TFListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String str = tfText.getText();
taText.setText(str);
tfText.setText("");
try{
dos.writeUTF(str);
dos.flush();
//dos.close();
}catch (IOException e1){
e1.printStackTrace();
}


}
}
}
服务器端
import java.io.*;
import java.net.*;public class server{ Socket s =null;
ServerSocket ss = null;
boolean start = false;
DataInputStream dis = null;

public static void main(String [] args){
new server().start();
}

public void start(){
try{
ss = new ServerSocket(8888);
}catch(BindException e){
System.out.println("端口已被使用");
System.out.println("请关闭后。重新运行");
System.exit(0);
}catch(IOException e){
e.printStackTrace();
}
try{
start = true;
while(start){
boolean bConnect = false;
s = ss.accept();
bConnect = true;
//System.out.println("s connected ");
dis = new DataInputStream(s.getInputStream());
while(bConnect){
String str = dis.readUTF();
System.out.println(str);
}
//dis.close();
}
}catch(EOFException e){
System.out.println("chat close");
}catch(IOException e){
//e.printStackTrace(); //出现问题的地方,这句注掉就可以编译成功
}finally{
try{
if(dis!=null)dis.close();
if(s!=null)s.close();
}catch (IOException e){
e.printStackTrace();
}

}
}
}
~~~聊天小项目  求解

解决方案 »

  1.   

    soket编程案例可以到google搜一下,有很多资源。
      

  2.   

    我目测这个没问题啊
    System.out.println("chat close");
    你发个编译不通过的图看下,或者鼠标放上去,什么错误?
      

  3.   

    java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.io.DataInputStream.readUnsignedShort(Unknown Source)
    at java.io.DataInputStream.readUTF(Unknown Source)
    at java.io.DataInputStream.readUTF(Unknown Source)
    at server.start(server.java:34)
    at server.main(server.java:12)
    这是将42行注释 操作符去掉后出现的错误、
      

  4.   

    可能Socket ss没有关闭导致的,该关的就要关掉,虽然正常运行没什么问题。