不要用API来糊弄我,我要的是能够解决问题的答案服务器代码
import java.net.*;
import java.io.*;
public class serverTCP
{
      public static void main(String[] args)
      {
         try{
               ServerSocket serversocket=new ServerSocket(2000);
               Socket socket=serversocket.accept();
               BufferedReader buffer=new BufferedReader(new InputStreamReader(socket.getInputStream()));
               String s=buffer.readLine();
               System.out.print(s);
               socket.close();
             }catch(SocketException e){e.printStackTrace();}
              catch(IOException e1){e1.printStackTrace();}
              catch(UnknownHostException e2){e2.printStackTrace();}
        }
}
客户端代码
import java.net.*;
import java.io.*;
public class clientTCP
{
    public static void main(String[] args)
     {
       try{
             Socket socket=new Socket(InetAddress.getByName("localhost"),2000);
             PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
             out.print("我向你发送了一个连接请求,你收到了吗");
           }catch(SocketException e){e.printStackTrace();}
            catch(IOException e1){e1.printStackTrace();}
       }
}错误:
当我运行客户端代码时会向服务器端发送一个字符串;
这时服务器端程序出现异常错误:
这是怎么回事,是我没有捕捉异常吗。
我应该怎么修改服务器端的代码:?不要用API来糊弄我,我要的是能够解决问题的答案

解决方案 »

  1.   

    import java.net.*;
    import java.io.*;public class serverTCP {
    public static void main(String[] args) {

    ServerSocket serversocket = null;
    Socket socket = null;
    BufferedReader buffer = null;

    try {

    serversocket  = new ServerSocket(2000);

    socket = serversocket.accept();

    buffer = new BufferedReader(new InputStreamReader(
    socket.getInputStream()));

    String s = buffer.readLine();

    System.out.print(s);

    buffer.close();
    socket.close();
    } catch (SocketException e) {
    e.printStackTrace();
    } catch (IOException e1) {
    e1.printStackTrace();
    } finally {
    try {
    buffer.close();
    socket.close();
    serversocket.close();
    } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }
    }
    }
    }
    import java.net.*; 
    import java.io.*; 
    public class clientTCP 

        public static void main(String[] args) {
          Socket socket = null;
          PrintWriter out = null;
          
          try {
           socket = new Socket(InetAddress.getByName("localhost"), 2000);       out = new PrintWriter(new BufferedWriter(
    new OutputStreamWriter(socket.getOutputStream())), true);
           
    //服务器端是行读,你用print没有行结束标志所以不行
    out.println("我向你发送了一个连接请求,你收到了吗");

    out.flush(); } catch (SocketException e) {
    e.printStackTrace();
    } catch (IOException e1) {
    e1.printStackTrace();
    } finally{
    out.close();
    try {
    socket.close();
    } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }
    }
          } 
    } 好了,还是print和println的问题,我帮你改了一下,代码尽量写的规范一点。
      

  2.   

    你把较小的异常放到较大的异常之后了,使它成了不可达代码
    导致编译都无法通过。
    服务端的代码改为:
    import java.net.*;
    import java.io.*;public class ServerTCP 
    {
    public static void main(String[] args) 
    {
    try{
    ServerSocket serversocket = new ServerSocket(6605);
    Socket socket = serversocket.accept();
    BufferedReader buffer = new BufferedReader(new InputStreamReader(
    socket.getInputStream()));
    String s = buffer.readLine();
    System.out.print(s);
    socket.close();
    }catch (SocketException e) {
    e.printStackTrace();
    }catch (UnknownHostException e2) {
    e2.printStackTrace();
    }catch(IOException e1) {
    e1.printStackTrace();
    }
    }
    }顺便说一下,你的代码写的极其地乱注意风格!!
      

  3.   

    晕CSDN把我格式吃了代码如下:
    import java.net.*;
    import java.io.*;public class ServerTCP 
    {
            public static void main(String[] args) 
            {
                    ServerSocket serversocket = null;
                    Socket socket = null;
                    BufferedReader buffer = null;
                    try{
                            serversocket = new ServerSocket(6605);
                            socket = serversocket.accept();
                            buffer = new BufferedReader(new InputStreamReader(
                                            socket.getInputStream()));
                            String s = buffer.readLine();
                            System.out.print(s);
                            socket.close();
                    }catch (SocketException e) {
                            e.printStackTrace();
                    }catch (UnknownHostException e2) {
                            e2.printStackTrace();
                    }catch(IOException e1) {
                            e1.printStackTrace();
                    }
            }
    }
    import java.net.*; 
    import java.io.*; 
    public class ClientTCP 

        public static void main(String[] args) 
        { 
          Socket socket=null;
          try{ 
                socket=new Socket(InetAddress.getByName("localhost"),6605); 
                PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 
                out.println("我向你发送了一个连接请求,你收到了吗"); 
              }catch(SocketException e){e.printStackTrace();} 
                catch(IOException e1){e1.printStackTrace();} 
          } 

    //类名第一个字母要大字啊风格好的代码便于阅读和维护·