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

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

客戶端沒有收到服務器響應

出現一個問題,服務器在循環里阻塞讀著信息,就沒出來獲取數據,我兩個循環都加了break才出來的 為什么老師實現了???

正在回答

2 回答

package?CStest;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.PrintWriter;import?java.net.Socket;import?java.net.UnknownHostException;import?java.util.Scanner;public?class?ClientTest?{	public?static?void?main(String[]?args)?{		try?{			//創建客戶端與服務器連接,并向服務器提示已連接			Socket?socket?=?new?Socket("127.0.0.1",?8888);			PrintWriter?pw=new?PrintWriter(new?OutputStreamWriter(socket.getOutputStream()));			pw.write("客戶端"+socket.hashCode()+"已連接");			pw.flush();			//獲取服務器端響應信息			BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(socket.getInputStream()));			String?info?=?null;			new?ClientThread(socket).start();			new?ClientThreadR(socket).start();					}?catch?(Exception?e)?{			e.printStackTrace();		}?			}}
package?CStest;import?java.io.BufferedReader;import?java.io.InputStreamReader;import?java.io.PrintWriter;import?java.net.Socket;public?class?ClientThread?extends?Thread?{	Socket?socket?=?null;	public?ClientThread(Socket?socket)?{		this.socket?=?socket;	}	public?void?run()?{		BufferedReader?br?=?null;		String?info?=?null;		try?{			//獲取服務器信息			br?=?new?BufferedReader(new?InputStreamReader(socket.getInputStream()));			while?(true)?{								if?((info?=?br.readLine())?!=?null)?{					System.out.println(info);				}			}		}?catch?(Exception?e)?{			e.printStackTrace();		}	}}
package?CStest;import?java.io.BufferedReader;import?java.io.InputStreamReader;import?java.io.OutputStreamWriter;import?java.io.PrintWriter;import?java.net.Socket;import?java.util.Scanner;public?class?ClientThreadR?extends?Thread?{	Socket?socket?=?null;	Scanner?inp=new?Scanner(System.in);	public?ClientThreadR(Socket?socket)?{		this.socket?=?socket;	}	public?void?run()?{		//?給服務器發送信息		PrintWriter?pw?=?null;		try?{			pw?=?new?PrintWriter(new?OutputStreamWriter(socket.getOutputStream()));//			pw.write("客戶端"+socket.hashCode()+"已建立連接:\n");//			pw.flush();			while(true)?{								System.out.println("客戶端"+socket.hashCode()+":");				pw.write(inp.nextLine()+"\n");				pw.flush();			}		}?catch?(Exception?e)?{			e.printStackTrace();		}	}}
package?CStest;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.PrintWriter;import?java.net.ServerSocket;import?java.net.Socket;import?java.util.ArrayList;import?java.util.List;public?class?ServerTest?{	public?static?void?main(String[]?args)?{		try?{						ServerSocket?server?=?new?ServerSocket(8888);			System.out.println("服務器啟動\n");			List<Socket>?list?=?new?ArrayList<Socket>();			while?(true)?{				Socket?socket?=?server.accept();				list.add(socket);				//啟動線程				new?ServerThreadR(socket,list).start();								System.out.println("已連接Client"?+?socket.hashCode()+":");			}		}?catch?(Exception?e)?{			e.printStackTrace();		}	}}
package?CStest;import?java.io.BufferedReader;import?java.io.IOException;import?java.io.InputStreamReader;import?java.io.OutputStreamWriter;import?java.io.PrintWriter;import?java.net.Socket;import?java.util.ArrayList;import?java.util.List;public?class?ServerThreadR?extends?Thread?{	Socket?socket?=?null;	List<Socket>?list?=?null;	public?ServerThreadR(Socket?socket,?List<Socket>?list)?{		this.socket?=?socket;		this.list?=?list;	}	PrintWriter?pw?=?null;	public?void?run()?{		BufferedReader?br?=?null;		String?info?=?null;		try?{			//?客戶端登錄,服務器向客戶端發送			pw?=?new?PrintWriter(new?OutputStreamWriter(socket.getOutputStream()));			pw.write("客戶端"+socket.hashCode()+"登錄\n");			pw.flush();			while?(true)?{				//?讀客戶端信息,監聽				br?=?new?BufferedReader(new?InputStreamReader(socket.getInputStream()));				if?((info?=?br.readLine())?!=?null)?{					ServerReader(info);					System.out.println("Client"?+?socket.hashCode()?+?":?"?+?info);				}			}		}?catch?(Exception?e)?{			e.printStackTrace();		}	}	public?void?ServerReader(String?str)?{		for?(int?i?=?0;?i?<?this.list.size();?i++)?{			PrintWriter?pw?=?null;			try?{				pw?=?new?PrintWriter(this.list.get(i).getOutputStream());				pw.write(str?+?"\n");				pw.flush();			}?catch?(IOException?e)?{				e.printStackTrace();			}		}	}}

//粘貼的有點亂,一共五個類,客戶端和一個監聽一個輸入兩個線程,服務端和一個監聽,你可以試試,不會來交流下,或者粘貼不對的,可以留下郵箱

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

貼代碼!

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

舉報

0/150
提交
取消

客戶端沒有收到服務器響應

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

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

幫助反饋 APP下載

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

公眾號

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