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

Connection reset

我的代码如下:

package regist;


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协议的Scoket通信,实现用户登录

 * 服务器端(先启动)

 */

public class Server {

public static void main(String[] args){

try {

//1 创建一个服务器Scoket,即ServerScoket,绑定端口,并监听该端口

ServerSocket severScoket=new ServerSocket(6666);

//2 调用方法accept()开始监听,等待客户端的链接

System.out.println("***服务器即将启动,等待客户端连接");

Socket scoket=severScoket.accept();

//3 获取输入流,用来获取客户端信息

InputStream is=scoket.getInputStream();//字节输入流

InputStreamReader isr=new InputStreamReader(is);//将字节流转化(包装)为字符流

BufferedReader br=new BufferedReader(isr);//为输入流添加缓冲 

String info=null;

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

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

}

scoket.shutdownInput();//关闭输入流

//4.获取输出流,响应客户端的请求

OutputStream os=scoket.getOutputStream();

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

pw.write("欢迎您");

pw.flush();//调用flush()方法将缓冲输出

//5关闭资源

pw.close();

os.close();

br.close();

isr.close();

is.close();

scoket.close();

severScoket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}

客户端:

package regist;


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.Socket;

import java.net.UnknownHostException;


/*

* 客户器端

*/

public class Client {

public static void main(String[] args){

try {

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

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

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

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

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

pw.write("用户名:admin;密码:123");

pw.flush();

socket.shutdownInput();//关闭流

//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) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

运行之后:

http://img.mukewang.com/575221df00010fad07320344.jpg

在我输入时,我发现有已经有人出现过这样的问题,我对了一下建议,可还是没发现我错在哪里,所以请帮我看一下

提问者:qq_阳光下的海风_0 2016-06-04 08:36

个回答

  • aryong
    2016-06-04 14:13:45
    已采纳

    客户端

    pw.flush();

    socket.shutdownInput();//关闭流

    是不是应该关闭输出流

    socket.shutdownOutput();//关闭流