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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

我想基于老師的代碼,實(shí)現(xiàn)聊天的功能,請(qǐng)問該怎么寫啊?

我發(fā)覺, 我像老師那樣寫,必須 ?socket.shutdownOutput();

否則,數(shù)據(jù)根本發(fā)不過去。 ?

但是一旦關(guān)閉了 輸出流, 又無法重新打開輸出流,從而導(dǎo)致只能輸一次話。。


public?class?Client?{
public?static?void?main(String[]?args)?{
????????try
????????{
????????Socket?socket=new?Socket("localHost",8886);
????????????OutputStream?os?=?socket.getOutputStream();
????????????BufferedWriter?bw=new?BufferedWriter(new?OutputStreamWriter(os));
????????????while?(true)
????????????{
????????????????BufferedReader?reader?=?new?BufferedReader(
????????????????????????new?InputStreamReader(System.in));
????????????????String?line?=?reader.readLine();
????????????????bw.write(line);
????????????????bw.newLine();//添加了寫一行操作,??服務(wù)端勉強(qiáng)能接收消息了
????????????????bw.flush();
????????????}
????????}
????????catch?(IOException?e)
????????{
????????????e.printStackTrace();
????????}
????}
}
/*
?*服務(wù)端接收
?*/
public?class?Server?{
public?static?void?main(String[]?args)?{
//1.創(chuàng)建一個(gè)服務(wù)器端Socket,指定綁定端口
try?{
ServerSocket?server=new?ServerSocket(8886);
System.out.println("服務(wù)器啟動(dòng),等待客戶端連接");
Socket?socket=server.accept();
System.out.println("客戶端連接成功,"+socket.toString());
InputStream?is=socket.getInputStream();
while(true){
InputStreamReader?isr=new?InputStreamReader(is);
BufferedReader?br=new?BufferedReader(isr);
if((br.readLine())!=null){//說是勉強(qiáng),因?yàn)槲野l(fā)覺必須把if語句去掉后,?才能收到消息,請(qǐng)問是怎么回事???
System.out.println(br.readLine());
}
}
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
}

1.當(dāng)客戶端不加newLine()的時(shí)候,沒接收到消息過。除非shutdownOutput()才能輸出一次,看了API,關(guān)閉輸出流的時(shí)候把數(shù)據(jù)發(fā)送過去了。 所以說是沒法過去的原因。\t\n之類的也知道一點(diǎn),但是,為何加newLine()有機(jī)會(huì)收到?

2.說是有機(jī)會(huì)收到,因?yàn)槲以诳蛻舳思恿薾ewLine(),去掉服務(wù)端的 If 才能收到,我完全部知道為什么能在客戶端讀到,為什么又讀不到

if((br.readLine())!=null){

System.out.println(br.readLine());

}

感覺沒錯(cuò)啊, 為啥上面的代碼不能輸出, 去掉If就能輸出了,因?yàn)閕f是有問題可以肯定, 但是具體錯(cuò)在哪兒了?

3. 如何設(shè)置IP才能放在朋友那里執(zhí)行客戶端, 能夠跟我通信, ?直接百度得到我的IP,但是朋友根本連不上這個(gè)IP。

public void newLine()
? ? ? ? ? ? throws IOException

寫入一個(gè)行分隔符。行分隔符字符串由系統(tǒng)屬性 line.separator 定義,并且不一定是單個(gè)新行 ('\n') 符。?


正在回答

2 回答

用其他包裝流 寫出來了。 但是這個(gè)問題還是沒搞懂。

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

Mass0

請(qǐng)問您現(xiàn)在搞懂這個(gè)問題了嗎?我也遇到了類似的問題,我按照老師的代碼敲得,可是客戶端的console沒有任何反應(yīng),服務(wù)器端的反應(yīng)正常。我發(fā)現(xiàn)是因?yàn)榉?wù)器傳回的消息是null 我很奇怪 明明調(diào)用了PrintWriter
2016-01-24 回復(fù) 有任何疑惑可以回復(fù)我~

public class Client {

public static void main(String[] args) {

? ? ? ? try

? ? ? ? {

? ? ? ? Socket socket=new Socket("localHost",8886);

? ? ? ? ? ? OutputStream os = socket.getOutputStream();

? ? ? ? ? ? BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));


? ? ? ? ? ? while (true)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? BufferedReader reader = new BufferedReader(

? ? ? ? ? ? ? ? ? ? ? ? new InputStreamReader(System.in));

? ? ? ? ? ? ? ? String line = reader.readLine();

? ? ? ? ? ? ? ? bw.write(line);

? ? ? ? ? ? ? ? bw.newLine();//添加了寫一行操作, ?服務(wù)端勉強(qiáng)能接收消息了

? ? ? ? ? ? ? ? bw.flush();

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? catch (IOException e)

? ? ? ? {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? }


? ? }

}

/*

?*服務(wù)端接收

?*/


public class Server {

public static void main(String[] args) {

//1.創(chuàng)建一個(gè)服務(wù)器端Socket,指定綁定端口

try {

ServerSocket server=new ServerSocket(8886);

System.out.println("服務(wù)器啟動(dòng),等待客戶端連接");

Socket socket=server.accept();

System.out.println("客戶端連接成功,"+socket.toString());

InputStream is=socket.getInputStream();

while(true){

InputStreamReader isr=new InputStreamReader(is);

BufferedReader br=new BufferedReader(isr);

if((br.readLine())!=null){//說是勉強(qiáng),因?yàn)槲野l(fā)覺必須把if語句去掉后, 才能收到消息,請(qǐng)問是怎么回事?。?/strong>

System.out.println(br.readLine());

}

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

  1. 當(dāng)客戶端不加newLine()的時(shí)候,沒接收到消息過。除非shutdownOutput()才能輸出一次,看了API,關(guān)閉輸出流的時(shí)候把數(shù)據(jù)發(fā)送過去了。 所以說是沒法過去的原因。\t\n之類的也知道一點(diǎn),但是,為何加newLine()有機(jī)會(huì)收到?

  2. 說是有機(jī)會(huì)收到,因?yàn)槲以诳蛻舳思恿薾ewLine(),去掉服務(wù)端的 If 才能收到,我完全部知道為什么能在客戶端讀到,為什么又讀不到

    if((br.readLine())!=null){

    System.out.println(br.readLine());

    }

    感覺沒錯(cuò)啊, 為啥上面的代碼不能輸出, 去掉If就能輸出了,因?yàn)閕f是有問題可以肯定, 但是具體錯(cuò)在哪兒了?


public void newLine()
? ? ? ? ? ? throws IOException

寫入一個(gè)行分隔符。行分隔符字符串由系統(tǒng)屬性 line.separator 定義,并且不一定是單個(gè)新行 ('\n') 符。?


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

舉報(bào)

0/150
提交
取消

我想基于老師的代碼,實(shí)現(xiàn)聊天的功能,請(qǐng)問該怎么寫???

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

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

幫助反饋 APP下載

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

公眾號(hào)

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