import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class MygobangServer extends JFrame implements ActionListener
{
private JPanel mainPanel=new JPanel();
private Container Pane;
private JButton startButton=new JButton("Server Started");
private JButton stopButton=new JButton("Stop Server");
private BufferedReader readName;
public MygobangServer()
{
Pane=getContentPane();
Pane.add(mainPanel);
mainPanel.setLayout(new GridLayout(1,2));
mainPanel.add(startButton);
mainPanel.add(stopButton);
stopButton.addActionListener(this);
this.setSize(250,80);
this.setLocation(10,650);
this.setVisible(true);
try
{
ServerSocket server=new ServerSocket(8888,50);
while(true)//等待连接
{
System.out.println("Writing to connected...");
Socket connection=server.accept();
         new changeMessage(connection);//开一个线程
System.out.println("One user Login...");
}

    }
catch(IOException e)
{
System.out.println("New ServerSocket"+e);
}
 

}
private class changeMessage extends Thread
    {
    
        private String MyName;
        private Socket connection;
        private ObjectInputStream input; 
        private ObjectOutputStream output;
        private ChangeMessage tempMessage;
        public changeMessage(Socket con)
        {
         this.connection=con;
     try
         {
         input=new ObjectInputStream(connection.getInputStream());
         output=new ObjectOutputStream(connection.getOutputStream());
         }
         catch(Exception eee)
         {
         System.out.println("New Stream"+eee);
         eee.printStackTrace();
         }
         this.start();
        }
        public void run()
        {
         try
         {
         while(true)
         {
         try
         {
         this.sleep(100);
         }
         catch(Exception ee)
         {
         System.out.println("Sleep Thread"+ee);
         }
         try
         {
             tempMessage=(ChangeMessage)input.readObject();
             System.out.println(tempMessage.getChatMessage());
             if(tempMessage.getFlay()==1)
         {
         MyName=tempMessage.getFromName();
         }
        
         else
         {
             output.writeObject(tempMessage);
             System.out.println(tempMessage.getChatMessage()+"AccpetMessage");
             }
             }
             
             catch(Exception eeee)
             {
              System.out.println("ReadOBject"+eeee);
              input.close();
              return;
             }
             
        
         }
        }
            catch(IOException e)
            {
             System.out.println("Input Data"+e);
            }
        }
    }
   
}客户端写出数据时是没有问题的!
我现在怀疑流的问题但还是找不出来!

解决方案 »

  1.   

    嗯,代码有些乱,呵呵。MygobangServer的代码肯定没有问题。
      

  2.   

    我想问题可能出在:(仅供参考)
    1.System.out.println(tempMessage.getChatMessage())
     从这里传递的String必须是static
    2.在服务器的输出流中,每次接受到了客户端的消息后要记得out.flush().清除缓冲区的字符串.readerbuffer和writebuffer.
       你的程序有点乱,而且不全,所以只能提点建议,希望对你有用.我以前也遇到过类似的问题.