问答详情
源自:3-5 使用多线程实现多客户端的通信

请求老师帮忙看一下错误:

try {

//1.创建客户端Socket,指定服务器地址和端口

Socket socket=new Socket("localhost", 1280);

//2.获取输出流,向服务器端发送信息

OutputStream os=socket.getOutputStream();//字节输出流

PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流

pw.write("用户名:alice;密码:789");

pw.flush();

// socket.shutdownOutput();//关闭输出流

//3.获取输入流,并读取服务器端的响应信息

InputStream is=socket.getInputStream();

BufferedReader br=new BufferedReader(new InputStreamReader(is));

String info=null;

while((info=br.readLine())!=null){

System.out.println("我是客户端,服务器说:"+info);

}

//4.关闭资源

br.close();

is.close();

pw.close();

os.close();

socket.close();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}


java.net.ConnectException: Connection timed out: connect

at java.net.DualStackPlainSocketImpl.connect0(Native Method)

at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)

at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)

at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)

at java.net.AbstractPlainSocketImpl.connect(Unknown Source)

at java.net.PlainSocketImpl.connect(Unknown Source)

at java.net.SocksSocketImpl.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at java.net.Socket.connect(Unknown Source)

at java.net.Socket.<init>(Unknown Source)

at java.net.Socket.<init>(Unknown Source)

at com.socket.Client.main(Client.java:49)


提问者:模棱 2016-06-21 10:03

个回答

  • SoyaDokio
    2016-07-01 01:04:48

    检查完代码才在最后发现有报错信息..

    首先,代码看了一遍,应该是没有错误。

    然后是报错信息,我分析有两种可能:

    1. 没有先启动服务端

    2. 多次启动/停止过于频繁,JVM没来得及解除端口占用

    再说对应的解决方法

    1. 先启动服务端再启动客户端

    2. 有三种方案

      ①关闭连接时线关闭服务端②每次启动更换端口③多次启动/停止之间留下一定空闲

  • 模棱
    2016-06-28 16:57:42

    启动了,我现在改好了

  • Danky_hi
    2016-06-21 14:51:56

    是不是你没有先启动服务器?或者你的服务器启动没有成功。