谁能比我长,很奇怪的给分,看看把(1),
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Server extends JFrame
{
private JTextField field;
private JTextArea area;
private JScrollPane scrollPane;
private JButton button;
private ServerSocket server_1;
private Socket server_2;
private ObjectOutputStream out;
private ObjectInputStream in;
public Server()
{
super("我的第一个聊天程序");
field = new JTextField(30);
area = new JTextArea(10,10);
scrollPane = new JScrollPane(area);
button = new JButton("提交");
getContentPane().add(field,BorderLayout.NORTH);
getContentPane().add(scrollPane,BorderLayout.CENTER);
getContentPane().add(button,BorderLayout.SOUTH);
setSize(300,300);
setVisible(true);
connect();
}
public void connect()
{
try{
server_1 = new ServerSocket(4700);
area.append("服务器启动,等待连接");
server_2 = server_1.accept();
area.append("\n连接成功,可以进行通讯了");
out = new ObjectOutputStream(server_2.getOutputStream());
in = new ObjectInputStream(server_2.getInputStream());
out.flush();
Mread();
}catch(Exception e){}
}
public void Mread()
{
try{
String get = (String)in.readObject();
while(true)
{
get =(String) in.readObject();
displayMessage(get);
if(get.equals("ByeBye"))
{
area.append("\n通讯结束");
break;
}
out.flush();
}
close();}catch(Exception eee){}
}
private void displayMessage( final String messageToDisplay )
{
SwingUtilities.invokeLater(
new Runnable() { // inner class to ensure GUI updates properly
public void run() // updates displayArea
{
area.append( "\n"+messageToDisplay );
area.setCaretPosition(
area.getText().length() );
}
} // end inner class
); // end call to SwingUtilities.invokeLater
}
public void close()
{
try{
out.close();
in.close();
server_2.close();
server_1.close();}catch(Exception e){}
}
public static void main(String args[])
{
Server app = new Server();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
为什么这个程序我用Client发一个你好,却陷入无穷循环,而下面的不会(看谁能比我长,很奇怪的给分,看看把(2),因为帖子太长发不完),应该怎么解决,我知道是whie()那里的原因,可是下面的程序就能行,为什么呢?我这个号实在没分了,我等一会在申请一个号,一定补分,先先帮帮我我吧,