把try屏蔽掉就可以显示窗体了。为什么?

解决方案 »

  1.   

    start:ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8080]
    没有设置addr和port,系统没有执行try,直接finally了
      

  2.   

    import java.io.*;
    //import java.net.*;
    import javax.swing.*;public class Server extends JFrame
    {
    JTextArea textreceive=new JTextArea();
    JTextArea textsend=new JTextArea();
    JButton button=new JButton("Send");

    BufferedReader in;
    PrintWriter out;
    public Server () throws IOException
    {
    //init controls
    setTitle("Chat Programmer");
    setBounds(50,50,500,400);
    getContentPane().setLayout(null); getContentPane().add(textreceive);
    getContentPane().add(textsend);
    getContentPane().add(button);

    textreceive.setBounds(10,10,450,300);
    textsend.setBounds(10,320,350,30);
    button.setBounds(370,320,70,30);

    /*
    ServerSocket server=new ServerSocket(8080);
    System.out.println("start:"+server);
    try
    {
    Socket s=server.accept();
    try
    {
    System.out.println("connecting :"+s);
    }
    finally
    {
    s.close();
    }
    }
    finally
    {
    server.close();
    }*/
    }

    public static void main(String args[]) throws IOException
    {
    Server s=new Server();
    s.show();
    }
    }
    就可以显示界面了
      

  3.   

    Socket s=server.accept();的意思是等待一个连接。
    程序执行到这句就停了。
    Server s=new Server();无法结束。
    s.show();执行不到。
      

  4.   

    那如何使Server.java既能显示界面,又能监听呢?
      

  5.   

    又写了一个Client.javaimport java.net.*;
    import java.io.*;
    import javax.swing.*;
    import java.awt.*;public class Client extends JFrame
    {
    JTextArea textreceive=new JTextArea();
    JTextArea textsend =new JTextArea();
    JButton button =new JButton ("Send");

    BufferedReader in;
    PrintWriter out;
    public Client() throws IOException
    {
    //init controls
    setTitle("Chat Programmer");
    setBounds(50,50,500,400);
    getContentPane().setLayout(null); getContentPane().add(textreceive);
    getContentPane().add(textsend);
    getContentPane().add(button);

    textreceive.setBounds(10,10,450,300);
    textsend.setBounds(10,320,350,30);
    button.setBounds(370,320,70,30);


    Socket client=new Socket("127.0.0.1",8080);
    try
    {
    System.out.println("Socket=" +client);
    }
    finally
    {
    client.close();
    }
    }

    public static void main(String args[]) throws IOException
    {
    Client c=new Client();
    c.show();
    }
    }先执行Server.java,再执行Client.java,就能显示窗体了:-)
      

  6.   

    import java.io.*;
    import java.net.*;
    import javax.swing.*;
    import java.awt.*;public class Server extends JFrame
    {
    JTextArea textreceive=new JTextArea();
    JTextArea textsend=new JTextArea();
    JButton button=new JButton("Send");

    BufferedReader in;
        PrintWriter out;
    public Server () 
    {
    //init controls
    setTitle("Server");
    setBounds(50,50,500,400);
    getContentPane().setLayout(null); getContentPane().add(textreceive);
    getContentPane().add(textsend);
    getContentPane().add(button);

    textreceive.setBounds(10,10,450,300);
    textsend.setBounds(10,320,350,30);
    button.setBounds(370,320,70,30);
    }

    public  void netstart() throws IOException
    {
    ServerSocket server=new ServerSocket(8080);
    System.out.println("start:"+server);
    try
    {
    Socket s=server.accept();
    try
    {
    System.out.println("connecting :"+s);

    in=new BufferedReader(new InputStreamReader(s.getInputStream()));
    out=new PrintWriter(
      new BufferedWriter(
        new OutputStreamWriter(s.getOutputStream())));

    String str=null;
    while (true)
    {
    str=in.readLine();
    if (str!=null)
        System.out.println("\n"+str);
    }
    }
    finally
    {
    s.close();
    }
    }
    finally
    {
    server.close();
    }
    }


    public static void main(String args[]) throws IOException
    {
    Server s=new Server();
    s.show();
    s.netstart();
    }
    }
    这段代码执行的时候怎么会出错?说地址已使用
      

  7.   

    是不是要把socket放入另一个线程中?