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

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

關(guān)于2.3節(jié)多客戶端重連的問題

@郭霖,多客戶端連入那一節(jié)reader和writer設(shè)置成全局怎么感覺好怪異。比如A客戶端連接,服務(wù)器拿到A的Socket對象,然后創(chuàng)建了reader和writer對象保持和A客戶端的通信。這個時候B客戶端接入,服務(wù)器拿到B的Socket對象,然后創(chuàng)建reader和writer對象,這個時候全局的reader和writer指向了B客戶端所對應(yīng)的Socket,那服務(wù)器這個時候應(yīng)該失去和A客戶端的通信功能了呀,怎么你的還可以通信呢,求解答,謝謝。

正在回答

3 回答

reader writer 設(shè)置為 類變量 然后開啟多個線程 會有線程安全問題吧

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

老師的代碼是有問題的,錯誤在?

不該把?BufferedReader bufferedReader;BufferedWriter bufferedWriter; 設(shè)置為全局。

否則會造成 后面接入的客戶端 的BufferedReader?BufferedWriter 會替換掉前面的。也就是只能最后一個客戶端是可以通信的。 ?

老師的代碼:B客戶端接入時,會替換A客戶端的 BufferedReader?BufferedWriter ?僅僅只能通信一次(這個原因還有待研究,被B客戶端替換后理應(yīng)一次都不能通信)。


下面是我糾正后的測試代碼(通過BufferedReader?BufferedWriter的hashCode可以看出已經(jīng)替換替換了):?

package com.jo.server;


import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;


public class SocketServer {

BufferedReader bufferedReader = null;

public static void main(String[] args) {

SocketServer socketserver = new SocketServer();

socketserver.startServer();

}

public void startServer(){

ServerSocket serverSocket = null;

Socket socket = null;

try {

serverSocket = new ServerSocket(9988);

System.out.println("------------等待客戶端的連接--------------");

//等待客戶端的連接、處于阻塞狀態(tài)

while(true){

socket = serverSocket.accept();

manageConnection(socket);

}

} catch (IOException e) {

e.printStackTrace();

} finally{

try {

if(socket != null)

socket.close();

if(serverSocket != null)

serverSocket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

public void manageConnection(final Socket socket){

new Thread(new Runnable() {

@Override

public void run() {

BufferedReader bufferedReader = null;

BufferedWriter bufferedWriter = null;

try {

System.out.println("------------client--------------" + socket.hashCode() + "connedted");

bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

// bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

String clientMsg;

while((clientMsg = bufferedReader.readLine()) != null){//readLine() 如果沒有信息,會處于阻塞狀態(tài)

System.out.println("bufferedReader.hashCode()" + bufferedReader.hashCode() +

"====socket.hashCode():" + socket.hashCode()+?

"====clientMsg:" + clientMsg);

bufferedWriter.write("server reply:" + clientMsg + "\n");

bufferedWriter.flush();

}

} catch (IOException e) {

e.printStackTrace();

}finally{

try {

if(bufferedWriter != null)

bufferedWriter.close();

if(bufferedReader != null)

bufferedReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}).start();

}

}






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

Episode

你的這個代碼問題也大啊,bufferedWriter全局變量不聲明,finally里關(guān)閉時會報錯,而且前面將bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));注釋掉后面咋個用?
2015-09-01 回復 有任何疑惑可以回復我~

我也剛剛看到這個視頻,這段服務(wù)器端的代碼我也覺得很神奇啊,b客戶端接入,感覺reader,write都變成b的了,回不去a了,為什么a的客戶端還能通過reader writer跟服務(wù)器通信

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

舉報

0/150
提交
取消
見證Android消息推送時刻
  • 參與學習       48182    人
  • 解答問題       210    個

本課程將一步步教你如何搭建出一個自己的Android推送平臺

進入課程

關(guān)于2.3節(jié)多客戶端重連的問題

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

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

幫助反饋 APP下載

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

公眾號

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