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

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

服務器線程

按照老師的做法,為什么我啟動了服務端,和客戶端,服務器端顯示了客戶端連接1,也會立即顯示客戶端連接2、http://img1.sycdn.imooc.com//5666cffe0001e96803800093.jpg

public?class?Server?{
public?static?void?main(String[]?args){
try?{
//1.創建服務器端socket,并指定端口號監聽
ServerSocket?serversocket?=?new?ServerSocket(8888);
//2.開始監聽客戶端請求
Socket?socket?=?null;
System.out.println("***服務器即將啟動,等待客戶端的連接***");
int?count?=0;
while(true){
socket?=?serversocket.accept();
ServerThread?st?=?new?ServerThread(socket);
st.start();
count++;
System.out.println("客戶端連接數:"+count);
//InetAddress?address?=?socket.getInetAddress();
//System.out.println("來自客戶端地址:"+address.getHostAddress());
}
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
}


正在回答

2 回答

肯定是你對著視頻敲代碼的時候敲錯了。你檢查下一下幾個地方:

  1. 定義的表示客戶端數量的變量初始化是不是0

  2. 你的System.out.println()語句是不是在accept()之前

    如果不是這兩個地方有問題,你把serverSocket的代碼貼上來,我給你看看

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

Kristchen 提問者

貼上去了
2015-12-08 回復 有任何疑惑可以回復我~
#2

sxian_wang 回復 Kristchen 提問者

服務端的代碼沒有問題。輸出客戶端的語句執行了兩次,也就是socket端口肯定收到了兩次請求。而第二次請求沒有包含任何消息。所以可能是客戶端的代碼出問題了,你檢查檢查,如果發現不了可以貼出來一起研究。 這門課的demo我也實現過,是沒有問題的。
2015-12-08 回復 有任何疑惑可以回復我~
#3

Kristchen 提問者 回復 sxian_wang

發現問題了,我在客戶端收到來自服務器端的響應時加了一個socket.shutdownInput()方法,我覺得需要關閉這個流資源,才導致出現了這個問題,難道不應該用這個方法嗎?而且為什么用了這個方法服務器端就會收到兩次請求
2015-12-09 回復 有任何疑惑可以回復我~
#4

sxian_wang 回復 Kristchen 提問者

[email protected],我在我的機器上調試下。
2015-12-09 回復 有任何疑惑可以回復我~
#5

sxian_wang 回復 sxian_wang

我百度了下shutdownInput(),也看了它的源碼。它的作用就是關閉一個socket的輸入流,不會產生網絡相關的操作。我把課程的代碼又翻出來擼了半天,你的這個問題我還是沒復現出來。。。你可以把你的代碼發到我上面的那個郵箱
2015-12-09 回復 有任何疑惑可以回復我~
#6

Kristchen 提問者

非常感謝!
2015-12-10 回復 有任何疑惑可以回復我~
查看4條回復

http://img1.sycdn.imooc.com//5666f3280001fd0506600314.jpg我覺得是線程問題吧

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

舉報

0/150
提交
取消

服務器線程

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

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

幫助反饋 APP下載

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

公眾號

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