亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

socket中輸入輸出流問題

在我編程中遇到了一個問題,就是客戶端如果不關閉輸入流的話,服務端與客戶端之間的通訊就會卡住,只要一調用socket。shutdownInput關閉輸入流就正常

客戶端代碼

public static void main(String[] args) {

try {

//1.創建socket對象,指明需要連接的服務器的地址和端口號

Socket clientSocket=new Socket("localhost", 8811);

//2.連接建立后,通過輸出流向服務器端發送請求消息

OutputStream os=clientSocket.getOutputStream();

PrintWriter pw=new PrintWriter(os);

pw.write("用戶名 : admin 密碼 :123");

pw.flush();

System.out.println("發送成功");

clientSocket.shutdownOutput();//只要把這行給注釋了,通訊就會卡住

//3.通過輸入流獲取服務器的響應信息

InputStream is=clientSocket.getInputStream();

InputStreamReader isr=new InputStreamReader(is);

BufferedReader br=new BufferedReader(isr);

String serverSay=br.readLine();

System.out.println("這里是客戶端? ,服務端說 : "+serverSay);

//4.關閉資源

clientSocket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

求大神解答一下原因

正在回答

1 回答

找到原因來了,問題在于服務器端是用來BufferedReader的readLine函數,這個函數只用在讀到換行符的時候才會結束,不然會一直是阻塞的狀態。而我這里發送的時候沒有加上換行符就會產生阻塞的現象,而我關閉了輸出流,就等與強制結束了readLIne函數的進程,所以也能解決問題。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

socket中輸入輸出流問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號