老是解决不了 跪求帮忙!
代码如下
服务器:
package Server;import java.io.*;
import java.awt.*;
import javax.swing.*;import java.awt.event.*;
import java.net.*;
public class MyServer extends JFrame implements ActionListener { public static void main(String[] args) {
// TODO Auto-generated method stub
MyServer ms=new MyServer();
}
JPanel jp=null;
JTextArea jta;
JTextField jt=null;
JScrollPane jsp=null;
JButton jb=null;
PrintWriter pw=null;

public MyServer()
{
jp=new JPanel();
jt=new JTextField(15);
jb=new JButton("发送");
jb.addActionListener(this);
jta=new JTextArea();
jsp=new JScrollPane(jta);

jp.add(jt);
jp.add(jb);

this.add(jsp,"Center");
this.add(jp,"South");
this.setSize(300,200);
this.setTitle("服务器");
this.setVisible(true);

try {
ServerSocket ss=new ServerSocket(8888);
//System.out.println("这是服务器 端口是9988。。");
Socket s=ss.accept();

InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
pw=new PrintWriter(s.getOutputStream(),true);
// s.close();
while(true)
{
    String info=br.readLine();
    jta.append("客户端对你说: "+info+"\r\n");
   
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

} @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb)
{
String info=jt.getText();
jta.append("你对客户端说: "+info + "\r\n");
pw.print(info);
jt.setText("");
}

}
}
---------------------------------------------------------------------------------------------------------------
客户端
package Client;import java.io.*;
import java.awt.*;
import javax.swing.*;import java.awt.event.*;
import java.net.*;
public class MyClient extends JFrame implements ActionListener{ public static void main(String[] args) {
// TODO Auto-generated method stub
MyClient ms=new MyClient();
}
JPanel jp=null;
JTextArea jta;
JTextField jt=null;
JScrollPane jsp=null;
JButton jb=null;
PrintWriter pw;
public MyClient()
{
jp=new JPanel();
jt=new JTextField(15);
jb=new JButton("发送");
jb.addActionListener(this);
jta=new JTextArea();
jsp=new JScrollPane(jta);

jp.add(jt);
jp.add(jb);

this.add(jsp,"Center");
this.add(jp,"South");
this.setSize(300,200);
this.setTitle("客户端");
this.setVisible(true);

try {
Socket s=new Socket("127.0.0.1",8888);
InputStreamReader isr2=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr2);
pw=new PrintWriter(s.getOutputStream(),true);
//s.close();
while(true)
{
String info=br.readLine();
jta.setText("服务器对你说: "+info+"\r\n");
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jb)
{
String info=jt.getText();
jta.append("你对服务器说: "+info+"\r\n");
pw.print(info);
jt.setText("");
}

}

}

解决方案 »

  1.   

    服务器端,和客户端有两段代码:
     while(true)
                {
                    String info=br.readLine();
                    jta.append("客户端对你说: "+info+"\r\n");
                   
                }
     while(true)
                {
                    String info=br.readLine();
                    jta.setText("服务器对你说: "+info+"\r\n");                
                }
    我觉得怪怪的,你是要让两边都能进行交流吗?
    那么你应该把try里的语句都包含在while字句里,比如server端应该是:
    try {
                 while(true)
                {
                ServerSocket ss=new ServerSocket(8888);
                //System.out.println("这是服务器 端口是9988。。");
                Socket s=ss.accept();
                
                InputStreamReader isr=new InputStreamReader(s.getInputStream());
                BufferedReader br=new BufferedReader(isr);
                pw=new PrintWriter(s.getOutputStream(),true);
                // s.close();
            
                    String info=br.readLine();
                    jta.append("客户端对你说: "+info+"\r\n");
                   
                }
                
            } catch (IOException e) {
    --
    并且你要注意流的刷新pw.flush();
    以及io流等的关闭pw.close();
    br.close();
    s.close();
      

  2.   

    Connection reset?  端口被占用了试试改一下端口.
      

  3.   

    Sorry,I Don't Know, 但愿后面的同志能帮LZ解决这个问题。
      

  4.   

    恩 ,首先帮你解决connection的问题
    问题在这句:
       String info=br.readLine();
    服务端在这句等待输入,可是关闭客户端是,就抛出了connection reset;//服务端的代码我改了,你自己对比下,客户端对应着也要改
         try {
                Socket s=new Socket("127.0.0.1",8888);
                InputStreamReader isr2=new InputStreamReader(s.getInputStream());
                BufferedReader br=new BufferedReader(isr2);
                pw=new PrintWriter(s.getOutputStream(),true);
                //s.close();
    //            while(!s.isClosed())
    //            {
    //                String info=br.readLine();
    //                jta.setText("服务器对你说: "+info+"\r\n");                
    //            }
                ///////////////////
                Scanner in = new Scanner(isr);
                while(in.hasNextLine())
                {
                  String info=br.readLine();
                  jta.setText("服务器对你说: "+info+"\r\n");     
                }
                ///////////////////
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
      

  5.   

    恩,搞定了 - -,顺便帮你解决了不能接收的问题。package Client;import java.io.*;
    import java.awt.*;
    import javax.swing.*;import java.awt.event.*;
    import java.net.*;
    import java.util.Scanner;
    public class MyClient extends JFrame implements ActionListener{    public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyClient ms=new MyClient();
        }
        JPanel jp=null;
        JTextArea jta;
        JTextField jt=null;
        JScrollPane jsp=null;
        JButton jb=null;
        PrintWriter pw;
        public MyClient()
        {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jp=new JPanel();
            jt=new JTextField(15);
            jb=new JButton("发送");
            jb.addActionListener(this);
            jta=new JTextArea();
            jsp=new JScrollPane(jta);
                    
            jp.add(jt);
            jp.add(jb);
            
            this.add(jsp,"Center");
            this.add(jp,"South");
            this.setSize(300,200);
            this.setTitle("客户端");
            this.setVisible(true);
            
            try {
                Socket s=new Socket("127.0.0.1",8888);
                InputStreamReader isr2=new InputStreamReader(s.getInputStream());
                BufferedReader br=new BufferedReader(isr2);
                pw=new PrintWriter(s.getOutputStream(),true);
                //s.close();
    //            while(!s.isClosed())
    //            {
    //                String info=br.readLine();
    //                jta.setText("服务器对你说: "+info+"\r\n");                
    //            }            ////////////////////////////////////////////////////////////////////////////////
    //这里要判断客户端是不是关了
                Scanner in = new Scanner(isr2);
                while(!s.isClosed() && in.hasNextLine())
                {
                  String info=in.nextLine();
                  jta.setText("服务器对你说: "+info+"\r\n");     
                }
                /////////////////////////////////////////////////////////////////////////
                
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            if(e.getSource()==jb)
            {
                String info=jt.getText();
                jta.append("你对服务器说: "+info+"\r\n");
                ///////////////////////////////////////////////////////////////
      //这里必须用println!!!,否则接收方无法判断接受到一行
                pw.println(info);
                /////////////////////////////////////////////////////////////
                jt.setText("");
            }
            
        }
        
    }
    package Server;import java.io.*;
    import java.awt.*;
    import javax.swing.*;import java.awt.event.*;
    import java.net.*;
    import java.util.Scanner;
    public class MyServer extends JFrame implements ActionListener {    public static void main(String[] args) {
            // TODO Auto-generated method stub
            MyServer ms=new MyServer();
        }
        JPanel jp=null;
        JTextArea jta;
        JTextField jt=null;
        JScrollPane jsp=null;
        JButton jb=null;
        PrintWriter pw=null;
        
        public MyServer()
        {
         setDefaultCloseOperation(EXIT_ON_CLOSE);
            jp=new JPanel();
            jt=new JTextField(15);
            jb=new JButton("发送");    
            jb.addActionListener(this);
            jta=new JTextArea();
            jsp=new JScrollPane(jta);
                    
            jp.add(jt);
            jp.add(jb);
            
            this.add(jsp,"Center");
            this.add(jp,"South");
            this.setSize(300,200);
            this.setTitle("服务器");
            this.setVisible(true);
            
            try {
                ServerSocket ss=new ServerSocket(8888);
                //System.out.println("这是服务器 端口是9988。。");
                Socket s=ss.accept();
                
                InputStreamReader isr=new InputStreamReader(s.getInputStream());
                BufferedReader br=new BufferedReader(isr);
                pw=new PrintWriter(s.getOutputStream(),true);
                // s.close();
    //            while(!s.isClosed())
    //            {
    //                String info=br.readLine();
    //                jta.append("客户端对你说: "+info+"\r\n");
    //            }
                ///////////////////////////////////////////////////////////////////////////////////
                Scanner in = new Scanner(isr);
                while(!s.isClosed() && in.hasNextLine())
                {
                  String info=in.nextLine();
                  jta.setText("客户端对你说: "+info+"\r\n");     
                }
                ///////////////////////////////////////////////////////////////////////////////////
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }    @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            if(e.getSource()==jb)
            {
                String info=jt.getText();
                jta.append("你对客户端说: "+info + "\r\n");
                /////////////////////////////////////////////////////////////
                pw.println(info);
                ///////////////////////////////////////////////////////////////
                jt.setText("");
            }
            
        }
        }