求大神帶飛,客戶端向服務(wù)端發(fā)送信息成功,卻收不到響應(yīng),怎么回事?
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 {
/**
* 服務(wù)器端
*?
*/
public static void main(String[] args) {
int port = 8818;
try {
// 1.創(chuàng)建ServerSocket實(shí)例
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("***服務(wù)器即將啟動(dòng),正在等待客戶機(jī)連接***");
// 調(diào)用accept()方法接收來自客戶機(jī)的Socket
Socket clintSocket = serverSocket.accept();
// 2.創(chuàng)建字節(jié)輸入流
InputStream is = clintSocket.getInputStream();
// 創(chuàng)建字符輸入流
InputStreamReader isr = new InputStreamReader(is);
// 給字符輸入流創(chuàng)建緩沖
BufferedReader br = new BufferedReader(isr);
String date = null;
// 3.當(dāng)讀取數(shù)據(jù)不為空時(shí),循環(huán)讀取
while ((date = br.readLine()) != null) {
System.out.println("我是服務(wù)端,客戶端連接成功!");
System.out.println("接收到登陸請(qǐng)求,驗(yàn)證信息如下:");
System.out.println(date);
}
// 4.返回給客戶端反饋信息
OutputStream os = clintSocket.getOutputStream();
// 將輸出流包裝為打印流
PrintWriter pw = new PrintWriter(os);
pw.write("歡迎您,在渣男路上越走越遠(yuǎn),登陸成功");
pw.flush();
// 5.關(guān)閉所有資源
//clintSocket.shutdownOutput();
pw.close();
os.close();
clintSocket.shutdownInput();// 關(guān)閉輸入流
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="用戶名:在渣男路上越走越遠(yuǎn)? ?密碼:123456";
try {
//1.創(chuàng)建客戶端Socket
Socket socket = new Socket("localhost", 8818);
//2.創(chuàng)建輸出流
OutputStream os=socket.getOutputStream();
//將輸出流包裝為打印流
PrintWriter pw=new PrintWriter(os);
//3.調(diào)用writer()方法寫入內(nèi)容
pw.write("用戶名:在渣男路上越走越遠(yuǎn)? ?密碼:123456");
pw.flush();
System.out.println("******登陸界面******");
System.out.println(sss);
System.out.println("正在請(qǐng)求登陸......");
//4.接收來自服務(wù)器的反饋信息
InputStream is=socket.getInputStream();
//創(chuàng)建字符輸入流
InputStreamReader isr=new InputStreamReader(is);
//給字符輸入流創(chuàng)建緩沖
BufferedReader br =new BufferedReader(isr);
String date1 = null;
//當(dāng)讀取數(shù)據(jù)不為空時(shí),循環(huán)讀取
while ((date1 = br.readLine()) != null) {
System.out.println(date1);
}
//5.關(guān)閉資源
//socket.shutdownInput();//關(guān)閉輸入流
br.close();
isr.close();
is.close();
socket.shutdownOutput();
pw.close();
os.close();
//socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2019-05-12
你應(yīng)該在客戶端進(jìn)行輸出流完成之后就應(yīng)該socket.shutdownOutput();而不是在最后才執(zhí)行