为了账号安全,请及时绑定邮箱和手机立即绑定

代码运行出现错误

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();
  }
  
 }
}

 运行结果

 

正在回答

3 回答

  InetAddress address=InetAddress.getLocalHost();

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

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


0 回复 有任何疑惑可以回复我~
#1

慕粉3170877 提问者

我知道原因了,出现的异常是BindException,表示这些错误通常发生在端口正在使用中或无法分配所请求的本地地址时。所以我改了端口号为9999后,就运行正确了,说明了8888这个端口正在使用。
2016-09-08 回复 有任何疑惑可以回复我~
#2

慕粉3170877 提问者

非常感谢!我最终找到原因了
2016-09-08 回复 有任何疑惑可以回复我~
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)

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

代码运行出现错误

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信