第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

怎么實現(xiàn)客戶端與服務(wù)器端 不停的相互發(fā)消息

//服務(wù)器端


package 通訊;


import java.io.BufferedOutputStream;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintStream;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;


public class server {

public static void main(String[] args) {

try {


ServerSocket serversocket = new ServerSocket(8888);

System.out.println("正在等待連接。。。。。。。");

Socket socket = serversocket.accept();

while(true){//死循環(huán)重復(fù)

InputStream is = socket.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String s;

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

System.out.println("客戶端說" + s);

}

socket.shutdownInput();

OutputStream os = socket.getOutputStream();

PrintStream bw = new PrintStream(os);

Scanner input = new Scanner(System.in);

System.out.println("你想對對面的客戶機說些什么");

bw.print(input.next());//從鍵盤輸入讀取一行打印到輸出流

bw.flush();

socket.shutdownOutput();

bw.close();

os.close();

br.close();

isr.close();

is.close();


}


} catch (IOException e) {

e.printStackTrace();

}


}


}



//客戶端

package 通訊;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintStream;

import java.net.Socket;

import java.util.Scanner;


public class client {

public static void main(String[] args) {

try {


Socket socket = new Socket("127.0.0.1", 8888);

while (true) {//死循環(huán)重復(fù)步驟

OutputStream os = socket.getOutputStream();

PrintStream bw = new PrintStream(os);

Scanner input = new Scanner(System.in);

System.out.println("你想對對面的服務(wù)器說些什么");

bw.print(input.next());//從鍵盤輸入讀取一行 打印到輸出流

bw.flush();

socket.shutdownOutput();


InputStream is = socket.getInputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

String s;

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

System.out.println("服務(wù)器端說:" + s);

}

socket.shutdownInput();


br.close();

isr.close();

is.close();

bw.close();

os.close();

}


} catch (IOException e) {

e.printStackTrace();

}


}

}

為什么這樣寫死循環(huán) 在客戶機發(fā)給服務(wù)器消息 服務(wù)器回復(fù)后就出現(xiàn)這樣的異常?

怎么修改才正確呢?

http://img1.sycdn.imooc.com//58f4a70900014be107130187.jpg

http://img1.sycdn.imooc.com//58f4a70900017b0f03810228.jpg

http://img1.sycdn.imooc.com//58f4a70a0001e7f403330175.jpg


正在回答

2 回答

錯誤異常意思是socket被關(guān)閉了。按你的代碼while(true)死循環(huán)里的socket.shutdownOutput();socket.shutdownInput();其實際意思是當(dāng)前socket的輸入和輸出已經(jīng)被關(guān)閉,不管服務(wù)器輸入或客戶端輸出數(shù)據(jù)都不行了,因此程序會崩掉。

按照一樓的回答,就是要在while循環(huán)里把這兩句代碼刪了就可以;或者我的另一個想法就是把Socket socket = new Socket("127.0.0.1", 8888);這句代碼放進(jìn)while循環(huán)中,讓它每循環(huán)一次都建新的socket對象,但這種做法較耗內(nèi)存資源。


0 回復(fù) 有任何疑惑可以回復(fù)我~
ServerSocket?serversocket?=?new?ServerSocket(8888);
System.out.println("正在等待連接。。。。。。。");
Socket?socket?=?serversocket.accept();
while(true){//死循環(huán)重復(fù)
InputStream?is?=?socket.getInputStream();
InputStreamReader?isr?=?new?InputStreamReader(is);
BufferedReader?br?=?new?BufferedReader(isr);
String?s;
while?((s?=?br.readLine())?!=?null)?{
System.out.println("客戶端說"?+?s);
}
socket.shutdownInput();

提前關(guān)閉了一次socket.刪除這行試試

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

怎么實現(xiàn)客戶端與服務(wù)器端 不停的相互發(fā)消息

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號