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

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://img1.sycdn.imooc.com//575221df00010fad07320344.jpg

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

正在回答

1 回答

客户端

pw.flush();

socket.shutdownInput();//关闭流

是不是应该关闭输出流

socket.shutdownOutput();//关闭流

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

qq_阳光下的海风_0 提问者

竟然真的好了!!!万分感谢
2016-06-04 回复 有任何疑惑可以回复我~
#2

qq_阳光下的海风_0 提问者

犀利!能再帮我解决一个问题吗? 为什么我第二次运行程序时,总会出现拒绝连接的异常? 老师只要停止一下就可以,可是我运行时,重启eclipse都没用
2016-06-04 回复 有任何疑惑可以回复我~
#3

aryong 回复 qq_阳光下的海风_0 提问者

我的有时也会出现这样的情况,然后我就换一个端口号,就没问题了,具体原因还不是很清楚,我是小白
2016-06-07 回复 有任何疑惑可以回复我~
#4

qq_阳光下的海风_0 提问者 回复 aryong

哈哈哈,我也是呀,运行一次换一次端口号!
2016-06-07 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

Connection reset

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