问答详情
源自:3-4 完善用户登陆之服务器响应客户端

代码运行出现错误

SEVER:
package com.imooc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/*
 * 基于TCP的Socket的通信
 * 服务器端
 */
public class Sever {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  try {
   ServerSocket serversocket=new ServerSocket(8888);
   System.out.println("***服务器即将启动,等待客户端的连接***");
   Socket socket=serversocket.accept();//监听客户端请求
   InputStream is=socket.getInputStream();//字节流
   InputStreamReader isr=new InputStreamReader(is);//将字节流转换为字符流
   BufferedReader br=new BufferedReader(isr);//为输入流添加缓冲
   String info=null;
      while((info=br.readLine())!=null){//循环读取客户端的信息
       System.out.println("我是服务器,客户端说:"+info);
      }
      socket.shutdownInput();//关闭输入流
      
      OutputStream os=socket.getOutputStream();
      PrintWriter pw=new PrintWriter(os);
      pw.write("欢迎您!");
      pw.flush();  
      socket.shutdownOutput();
       
      
      is.close();
      isr.close();
      br.close();
      os.close();
      pw.close();    
      serversocket.close();
      socket.close();
      
   
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

client:

package com.imooc;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
/*
 * 基于TCP的Socket的通信
 * 客户端
 */
public class Client {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  try {
   InetAddress address=InetAddress.getLocalHost();
   Socket socket=new Socket(address.getHostAddress(),8888);
   OutputStream os=socket.getOutputStream();//输出流
   PrintWriter pw=new PrintWriter(os);//将输出流转换为打印流
   pw.write("用户名:可心;密码是:1234");
      pw.flush();
   socket.shutdownOutput();//关闭输出流
   
   InputStream is=socket.getInputStream();
   InputStreamReader isr=new InputStreamReader(is);//将字节流转换为字符流
   BufferedReader br=new BufferedReader(isr);//为输入流添加缓冲
   String info=null;
      while((info=br.readLine())!=null){//循环读取客户端的信息
       System.out.println("我是客户端,服务器说:"+info);
      }
   socket.shutdownInput();
   
   
   os.close();
   pw.close();
   is.close();
   isr.close();
   br.close();   
   socket.close();
   
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
}

 运行结果

 

提问者:慕粉3170877 2016-09-07 17:42

个回答

  • 慕标3782920
    2016-09-07 19:45:36
    已采纳

      InetAddress address=InetAddress.getLocalHost();

       Socket socket=new Socket(address.getHostAddress(),8888);

    8888前面可以直接填写“localhost”的


  • 慕粉3170877
    2016-09-08 08:38:33

    java.net.BindException: Address already in use: JVM_Bind
    
     at java.net.DualStackPlainSocketImpl.bind0(Native Method)
    
     at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
    
     at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
    
     at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
    
     at java.net.ServerSocket.bind(ServerSocket.java:375)
    
     at java.net.ServerSocket.<init>(ServerSocket.java:237)
    
     at java.net.ServerSocket.<init>(ServerSocket.java:128)
    
     at com.imooc.Sever.main(Sever.java:22)

  • 慕粉3170877
    2016-09-08 08:37:11

    改了,也出现同样的错误!运行结果是: