你程序是:
成都創(chuàng)新互聯(lián)網站建設公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網定制,成都做網站、網站設計,塑造企業(yè)網絡形象打造互聯(lián)網企業(yè)效應。
服務端有不斷的向客服端寫信息,客戶端有不斷的讀來自服務端的信息。
但是反過來,客戶端沒有不斷的向服務端寫信息。服務端也沒有不斷的讀來自客戶端的信息。
用線程解決:
在客戶端新加一條線程,專門用來讀取來自服務端的信息。
在服務端新加一條線程,專門用來讀取來自客戶端的信息。
而在各自的main()函數(shù)中只負責不斷接收system.in信息,然后發(fā)送信息..
其實不用線程的。。我也改了下,改的好像較多。
運行步驟:
開server端,開kehu端??头慷讼葘懭胄畔?。。然后,你一句我一句。只能按這順序。。這就是沒用線程的結果。
代碼如下:
服務端:
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args)
{
System.out.println("我是服務器");
try {
ServerSocket ss=new ServerSocket(8000);
Socket sk=ss.accept();
OutputStream os=sk.getOutputStream();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));
bw.write("你好,我是服務器,有什么需要我服務的嘛?\n");
bw.flush();
InputStream is=sk.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
while(true)
{
String str=br.readLine();
if(str.equals("bye")||str==null)break;
System.out.println("客戶端說:"+str);
String sr="";
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
sr=br1.readLine();
bw.write(sr+"\n");
bw.flush();
}
}
catch (Exception e) {
System.out.println("客用戶機己斷開");
}
}
}
客戶端:
import java.net.*;
import java.io.*;
public class kehu {
public static void main(String[] args)
{
System.out.println("我是客戶");
try {
Socket s=new Socket(InetAddress.getByName(null),8000);
InputStream is=s.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
OutputStream os=s.getOutputStream();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os));
String sr="";
while(true)
{
sr=br.readLine();
if(sr.equals("bye")||sr==null)break;
System.out.println("服務器說"+sr);
BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
sr=br1.readLine();
bw.write(sr+"\n");
bw.flush();
}
} catch (Exception e) {
System.out.println("服務器未開戶或己關閉~");
}
}
}
最簡答的
int i = 0; //記錄循環(huán)的次數(shù)
while(true){
//為了讓你看到循環(huán)的打印信息
System.out.println(++i+"次死循環(huán)");
}
當某一掃描器拋出 InputMismatchException 時,該掃描器不會傳遞導致該異常的標記,因此可以通過其他某種方法來獲取或跳過它。
這是java API文檔中的原話。意思是說,如果nextInt方法沒有成功解析出一個整數(shù),那么你的輸入不會被忽略。因為它或許能被其它格式解析。
那么你的程序中輸入了a后,出現(xiàn)異常,number被賦值100,開始下一次循環(huán),但這時數(shù)據緩沖區(qū)內你上次輸入的a還在,并沒有清除,這時繼續(xù)解析a,還是錯誤,于是這個過程就一直重復下去了。
現(xiàn)在你要改的是,出現(xiàn)錯誤把這次的輸入清除,只要在catch中,加一句:input.next()就搞定了!
網站題目:java死循環(huán)的代碼 java死循環(huán)代碼正確停止錯誤繼續(xù)循環(huán)
標題鏈接:http://muchs.cn/article0/hphcio.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站營銷、網站設計公司、網站改版、軟件開發(fā)、虛擬主機、網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)