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

求大神带飞,客户端向服务端发送信息成功,却收不到响应,怎么回事?

package com.tcp;


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;


public class Server {

/**

* 服务器端

*/


public static void main(String[] args) {

int port = 8818;

try {

// 1.创建ServerSocket实例

ServerSocket serverSocket = new ServerSocket(port);

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

// 调用accept()方法接收来自客户机的Socket

Socket clintSocket = serverSocket.accept();

// 2.创建字节输入流

InputStream is = clintSocket.getInputStream();

// 创建字符输入流

InputStreamReader isr = new InputStreamReader(is);

// 给字符输入流创建缓冲

BufferedReader br = new BufferedReader(isr);

String date = null;


// 3.当读取数据不为空时,循环读取

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

System.out.println("我是服务端,客户端连接成功!");

System.out.println("接收到登陆请求,验证信息如下:");

System.out.println(date);

}


// 4.返回给客户端反馈信息

OutputStream os = clintSocket.getOutputStream();

// 将输出流包装为打印流

PrintWriter pw = new PrintWriter(os);

pw.write("欢迎您,在渣男路上越走越远,登陆成功");

pw.flush();

// 5.关闭所有资源

//clintSocket.shutdownOutput();

pw.close();

os.close();

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

br.close();

isr.close();

is.close();

clintSocket.close();

serverSocket.close();


} catch (IOException e) {


e.printStackTrace();

}

}


}



package com.tcp;


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.io.Writer;

import java.net.Socket;

import java.net.UnknownHostException;


public class Clint {

/**

* 客户端

*/

public static void main(String[] args) {

String sss="用户名:在渣男路上越走越远   密码:123456";

try {

//1.创建客户端Socket

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

//2.创建输出流

OutputStream os=socket.getOutputStream();

//将输出流包装为打印流

PrintWriter pw=new PrintWriter(os);

//3.调用writer()方法写入内容

pw.write("用户名:在渣男路上越走越远   密码:123456");

pw.flush();

System.out.println("******登陆界面******");

System.out.println(sss);

System.out.println("正在请求登陆......");

//4.接收来自服务器的反馈信息

InputStream is=socket.getInputStream();

//创建字符输入流

InputStreamReader isr=new InputStreamReader(is);

//给字符输入流创建缓冲

BufferedReader br =new BufferedReader(isr);

String date1 = null;

//当读取数据不为空时,循环读取

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

System.out.println(date1);

}

//5.关闭资源

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

br.close();

isr.close();

is.close();

socket.shutdownOutput();

pw.close();

os.close();

//socket.close();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}


}


}


正在回答

1 回答

你应该在客户端进行输出流完成之后就应该socket.shutdownOutput();而不是在最后才执行

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

溺鲸 提问者

谢谢,已经解决了
2019-07-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求大神带飞,客户端向服务端发送信息成功,却收不到响应,怎么回事?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号