為什么我寫的javaSocket通信,客戶端連接服務端了,然后客戶端發送消息給服務端,服務端接收,這個時候服務端接收的文件獲取不到,只有等到客戶端關閉的時候,服務端才能接到。這是代碼
package?server;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.OutputStream;
import?java.net.InetAddress;
import?java.net.ServerSocket;
import?java.net.Socket;
public?class?Server?{
public?static?void?main(String[]?args){
//1.創建一個服務器端socket即serversocket指定綁定的端口并監聽此端口
ServerSocket?serverSocket=null;
String?info=null;
InputStream?is=null;
OutputStream?os=null;
try?{
serverSocket?=?new?ServerSocket(8888);
//2.調用accept()方法開始監聽,等待客戶端的連接
//讓客戶端一直訪問
Socket?socket?=null;
while(true){
socket?=?serverSocket.accept();
InetAddress?ss?=?socket.getInetAddress();
System.out.println(ss.getHostAddress());
//3.獲取輸入流,并讀取客戶端信息
is=socket.getInputStream();//字節輸入流
os=socket.getOutputStream();
DataOutputStream?dos=new?DataOutputStream(os);
DataInputStream?dis=new?DataInputStream(is);
// InputStreamReader?isr=new?InputStreamReader(is);//將字節流轉化為字符輸入流
// BufferedReader?br=new?BufferedReader(isr);//為輸入流添加緩沖
String?s=null;
s=dis.readUTF();
while((s=dis.readUTF())!=null){
System.out.println("我是服務器,客戶端說"+s);
System.out.println("IP"+socket.getInetAddress());
System.out.println("port"+socket.getPort());
}
if(socket.isClosed()){
System.out.println("關閉");
}else{
System.out.println("沒關閉");
}
//4.獲取輸出流,響應客戶端的請求
dos.writeUTF("hello");
dis.close();
socket.close();
}
}?catch?(IOException?e)?{
System.out.println("客戶端異常斷開");
}
}
}小弟跪求大家幫幫忙了!
添加回答
舉報
0/150
提交
取消