import java.io.*;
import java.net.*;
public class talkserver
{
  public static void main(String[] args)
  {
     try   //注意异常处理,打开ServerSocket 构造函数的异常
     {
      ServerSocket  server = new ServerSocket(4700); // 带端口号          
     }
     catch(Exception e)
     {
       System.out.println("Can not listen to "+ e);
     }
     
           
     try
     {
        Socket socket = server.accept();
     }
     
     
     
     catch(Exception e)
     {
         System.out.println("Error "+ e);
     }
     String line ;
     BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter os = new PrintWriter(socket.getOutputStream());
        BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Client:"+is.readLine(is));
        line = sin.readLine();
        while(!line.equals("bye"))
        {
           os.pirntln(line);
           os.flush();    // 清空缓存
           System.out.println("Server:"+line);
           System.out.println("Client:" + is.readLine());
           line = sin.readLine();
           
        }
        is.close();
        os.close();
        socket.close();
        server.close();
              
  }
}以上程序在  Socket socket = server.accept(); 
这里编译报错,看了几遍,都不知道为啥。

解决方案 »

  1.   

    server声明的时候你是声明在了 try   //注意异常处理,打开ServerSocket 构造函数的异常
                {
                    ServerSocket  server = new ServerSocket(4700); // 带端口号                
                }
                catch(Exception e)
                {
                     System.out.println("Can not listen to "+ e);
                }这个里面,而你使用的时候是在外部使用的,可以这样调整下,去掉所有的try,catch,在main方法里面使用一个try,catch,把所有的代码写在里面,即可
      

  2.   

    import java.io.*;
    import java.net.*;
    public class talkserver {
    public static void main(String[] args) {
    try // 注意异常处理,打开ServerSocket 构造函数的异常
    {
    ServerSocket server = new ServerSocket(4700); // 带端口号
    Socket socket = server.accept();
    String line;
    BufferedReader is = new BufferedReader(new InputStreamReader(socket
    .getInputStream()));
    PrintWriter os = new PrintWriter(socket.getOutputStream());
    BufferedReader sin = new BufferedReader(new InputStreamReader(
    System.in));
    System.out.println("Client:" + is.readLine());
    line = sin.readLine();
    while (!line.equals("bye")) {
    os.println(line);
    os.flush(); // 清空缓存
    System.out.println("Server:" + line);
    System.out.println("Client:" + is.readLine());
    line = sin.readLine(); }
    is.close();
    os.close();
    socket.close();
    server.close(); } catch (Exception e) {
    System.out.println("your error is " + e);
    }
    }
    }
      

  3.   

    1楼正解ServerSocket  server =  null; 
    try   //注意异常处理,打开ServerSocket 构造函数的异常
                {
                    ServerSocket  server = new ServerSocket(4700); // 带端口号                
                }
                catch(Exception e)
                {
                     System.out.println("Can not listen to "+ e);
                }
                
                            
                try
                {
                      Socket socket = server.accept();
                }
                
                
                
                catch(Exception e)
                {
                       System.out.println("Error "+ e);
                }
    红色部分放在同一个try语句块中,或者将server放在蓝色位置单独声明变量
      

  4.   

    在try/catch块定义的变量相当于局部变量,在try/catch块外不可见。
    除了楼上的建议外,也可以在try/catch外定义那些变量。ServerSocket server=null;
    Socket socket=null;
    BufferedReader is=null;
    PrintWriter os=null;
      

  5.   

    package a;import java.io.*;
    import java.net.*;public class TalksServer {
    public static void main(String[] args) {
    //在try {}catch{}外面定义变量,然后再try中创建
    ServerSocket server = null;
    Socket socket = null;
    String line;
    BufferedReader is = null;
    PrintWriter os = null;
    BufferedReader sin = null;
    try {// 注意异常处理,打开ServerSocket 构造函数的异常
    server = new ServerSocket(4700); // 带端口号
    socket = server.accept();
    } catch (Exception e) {
    System.out.println("Can not listen to " + e);
    } try {
    is = new BufferedReader(new InputStreamReader(
    socket.getInputStream()));
    os = new PrintWriter(socket.getOutputStream());
    sin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Client:" + is.readLine());
    line = sin.readLine();
    while (!line.equals("bye")) {
    os.println(line);
    os.flush(); // 清空缓存
    System.out.println("Server:" + line);
    System.out.println("Client:" + is.readLine());
    line = sin.readLine(); }
    } catch (Exception ex) {
    ex.printStackTrace();
    } finally { try {
    if (is != null)
    is.close();
    if (os != null)
    os.close();
    if (socket != null)
    socket.close();
    if (server != null)
    server.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    }
    }