问题说明:下边的client代码与server代码,当client发出连接后(按钮按下后),服务器端能响应,但server端就是不能打印(显示)client传来的信息
客户端通过一个按钮来进行与服务器端的socket连接
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO 将在此处添加您的处理代码:
        Vector vreg=new Vector();
            vreg.add(nc.getText());
            vreg.add(xm.getText());
            vreg.add(xb.getSelectedItem().toString());
            vreg.add(ll.getText());       
        
            try{
                link_server_ip=java.net.InetAddress.getByName("www.abc.net").getHostAddress().toString();
                link_sa=new java.net.InetSocketAddress(link_server_ip,java.lang.Integer.parseInt(link_sports));                link_server.connect(link_sa);
                link_sosw=new OutputStreamWriter(link_server.getOutputStream());
                link_bwout=new BufferedWriter(link_sosw);
                String send_s=null;
                Iterator itr=vreg.iterator();
                while(itr.hasNext())
                {
                    send_s=(String) itr.next();
                    link_bwout.write(send_s);
                    link_bwout.flush();
                }
            }
            catch(Exception ex)
            {
                
            }
    }        服务器端接收代码:
public class Main extends javax.swing.JFrame {
.....
   public Main() {
        ......
        waitlink();
    }
      void waitlink()
    {
        try
        {
            ss=new ServerSocket(9091);
            
                servers=ss.accept();                sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream()));
                String lineStr = null; 
                while((lineStr=sdis.readLine())!=null) 
                {                   jta1.setText(jta1.getText()+lineStr); 
                  jta1.repaint();       
                  System.out.println(lineStr);
                } 
        }
        catch(Exception e)
        {
            
        }
       
    }                       

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【cqandy】截止到2008-07-26 23:02:49的历史汇总数据(不包括此帖):
    发帖的总数量:12                       发帖的总分数:350                      每贴平均分数:29                       
    回帖的总数量:11                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:12                       结贴的总分数:350                      
    无满意结贴数:1                        无满意结贴分:50                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:8.33  %               无满意结分率:14.29 %                  
    敬礼!
      

  2.   

    e.printStackTrace()看看是不是有异常
      

  3.   

    的确是有异常我的操作过程是:C/S全部在本机上测试,即一台电脑1.首选启动server端程序,由于accept()阻塞,并不显示server端的窗口2.启动client端程序,输入一些信息后,通过一个按钮,与server建立socket这时,服务器也不显示窗口,但我先关闭client端窗口,再去看netbeans5.5的输入有如下报错:
    java.net.SocketException: Connection reset
            at java.net.SocketInputStream.read(SocketInputStream.java:168)
            at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:411)
            at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:453)
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
            at java.io.InputStreamReader.read(InputStreamReader.java:167)
            at java.io.BufferedReader.fill(BufferedReader.java:136)
            at java.io.BufferedReader.readLine(BufferedReader.java:299)
            at java.io.BufferedReader.readLine(BufferedReader.java:362)
            at testsocket.Main.waitlink(Main.java:51)
            at testsocket.Main.<init>(Main.java:36)
            at testsocket.Main$2.run(Main.java:165)
            at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
    老师请指点呀!!!
      

  4.   

    在下将我的报错代码全贴出,望老师指教,谢谢server端代码:package testsocket;
        import java.net.*;
        import java.io.*;
        import java.util.*;
        import java.lang.*;
        import javax.swing.*;public class Main extends javax.swing.JFrame {    private ServerSocket ss;    private Socket servers;    java.io.BufferedReader sdis=null;    java.io.InputStreamReader isr=null;    java.io.BufferedWriter bw=null;//输出流
        
        java.io.OutputStreamWriter osw=null;//
        
        
        /** Creates new form Main */
        
        public Main() {
            initComponents();
            waitlink();
        }
        
        void waitlink()
        {
            try
            {
                ss=new ServerSocket(9091);
                
                    servers=ss.accept();                sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream()));                //bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
                   String lineStr = null; 
                    while((lineStr=sdis.readLine())!=null) 
                    {                   jta1.setText(jta1.getText()+lineStr); 
                      jta1.repaint();       
                      System.out.println(lineStr);
                    } 
                           //bw.write("hello");
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            
            
        }
        
                          
        private void initComponents() {
    ...}
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO 将在此处添加您的处理代码:
            try
            {
                bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
                bw.write(jTextField1.getText());
            }
            catch(Exception e)
            {
                
            }
        }                                        
       
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Main().setVisible(true);
                }
            });
        }
        
        // 变量声明 - 不进行修改                     
        private javax.swing.JButton jButton1;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTextField jTextField1;
        private javax.swing.JTextArea jta1;
        // 变量声明结束                       
    }
      

  5.   

    client端代码:
    package hhchat;
    import java.io.*;
    import java.net.*;
    import java.sql.*;
    import java.util.Iterator;
    import java.util.Vector;
    import com.microsoft.jdbc.sqlserver.*;public class hhReg extends javax.swing.JFrame {
        
        /** Creates new form hhReg */
        
        Socket link_server=new Socket();
        String link_sports="9091";
        java.net.SocketAddress link_sa=null;
        BufferedWriter link_bwout=null;
        BufferedReader link_brin=null;
        java.io.InputStreamReader link_sisr=null;
        java.io.OutputStreamWriter link_sosw=null;
        
        String link_server_ip=null;
        public hhReg() {
            initComponents();
        }    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">                          
        private void initComponents() {
    ...
    }                        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO 将在此处添加您的处理代码:
            Vector vreg=new Vector();            vreg.add(nc.getText());
                vreg.add(xm.getText());
                vreg.add(xb.getSelectedItem().toString());
                vreg.add(ll.getText());        
            
                try{
                    link_server_ip=java.net.InetAddress.getByName("www.abc.net").getHostAddress().toString();
                    link_sa=new java.net.InetSocketAddress(link_server_ip,java.lang.Integer.parseInt(link_sports));                link_server.connect(link_sa);
                    link_sosw=new OutputStreamWriter(link_server.getOutputStream());
                    link_bwout=new BufferedWriter(link_sosw);
                    String send_s=null;
                    Iterator itr=vreg.iterator();
                    while(itr.hasNext())
                    {
                        send_s=(String) itr.next();
                        link_bwout.write(send_s);
                        link_bwout.flush();
                    }
                }
                catch(Exception ex)
                {
                    ex.printStackTrace();
                }    }                                        
            public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new hhReg().setVisible(true);
                }
            });
        }
        
        // 变量声明 - 不进行修改                     
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JLabel jLabel4;
        private javax.swing.JLabel jLabel5;
        private javax.swing.JLabel jLabel6;
        private javax.swing.JLabel jLabel7;
        private javax.swing.JTextField ll;
        private javax.swing.JTextField nc;
        private javax.swing.JComboBox xb;
        private javax.swing.JTextField xm;
        // 变量声明结束                   
        
    }
      

  6.   

    void waitlink()
        {
            try
            {
                ss=new ServerSocket(9091);
               
                    servers=ss.accept();                sdis=new BufferedReader(isr=new InputStreamReader(servers.getInputStream()));                //bw=new BufferedWriter(osw=new OutputStreamWriter(servers.getOutputStream()));
                  String lineStr = null;
                    while((lineStr=sdis.readLine())!=null)
                    {                  jta1.setText(jta1.getText()+lineStr);
                      jta1.repaint();     
                      System.out.println(lineStr);
                    }
               
    ss.close();
              //bw.write("hello");
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
           
           
        }