我正在執行此代碼,並且當我創建稱爲緩衝區的字節數組時,它被初始化爲0,所以當我執行.read()函數時,它不會等待讀取任何內容,因爲緩衝區是充分。 當我申報和itialize緩衝區並打印後,如果它充滿了零等等讀它不等待從套接字recive數據。從Java的套接字讀取字節
欲recive從交流服務器正在發送一個char []消息
public class th extends Thread {
public static ServerSocket sc;
public static byte[] buffer = new byte[256];
public th(){
sc = null;
}
public th (ServerSocket userSC){
sc = userSC;
}
public void run() {
System.out.println("En la clase TH");
Socket serverAddr;
boolean condicion = true;
DataInputStream in;
int p;
for (p = 0; p < 256; p++) System.out.print(buffer[p] + " ");
/*try {
serverAddr = sc.accept();
in = new DataInputStream(serverAddr.getInputStream());
}
catch (Exception e){
System.err.println("Error creando socket");
}*/
try {
System.err.println("-1---------------------------------");
serverAddr = sc.accept();
in = new DataInputStream(serverAddr.getInputStream());
System.err.println("0---------------------------------");
System.err.println("1---------------------------------");
in.read(buffer);
for (p = 0; p < 256; p++) System.out.print(buffer[p] + " ");
int a = in.read(buffer);
if (a < 0) {
exit();
}
for (p = 0; p < 256; p++) System.out.print(buffer[p] + " ");
String res = new String(buffer);
System.out.println(res);
System.out.println("NO ESPERA");
serverAddr.close();
}
catch (IOException e){
System.err.println("Error creando socket");
}
}
}
請花些時間來清晰地設置代碼的格式並使用常規名稱 - 您應該儘可能讓您的問題容易理解。它無助於你忽略'read'返回的值... –
它與緩衝區的初始值沒有任何關係。這個cide不會等待讀取任何東西的唯一原因是如果read()返回-1,這是一種你忽略的可能性,表明對等關閉了連接。請格式化這個難以辨認的混亂。 – EJP
是的,read()函數返回-1,但我不知道原因。如果你能幫助我......( – MrSman