[英]Client can't receive info from Server
我正在嘗試從服務器向客戶端發送文件信息,但無法在客戶端接收信息。 我認為這是一個錯誤的流,但無法找到它。
我調試代碼,我發現信息讀取得很好但是當遇到問題時發生了一些不好的事情:
while ((readLine = read.readLine()) != null) {
它是null
,一切都結束了。
public class Server {
private String urlFile = "http://riemann.fmi.uni-ofia.bg/vladov/students/boil.txt";
private ServerSocket serverSocket = null;
private BufferedReader read = null;
private BufferedWriter write = null;
private FileReader fileReader = null;
URLConnection urlConnection = null;
void acceptConnection() {
try {
serverSocket = new ServerSocket(3000);
Socket client = null;
while (true) {
client = serverSocket.accept();
handleConnection(client);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private void handleConnection(Socket clientSocket) {
try {
URL url = new URL(urlFile);
urlConnection = url.openConnection();
read = new BufferedReader(new InputStreamReader(
urlConnection.getInputStream()));
write = new BufferedWriter(new OutputStreamWriter(
clientSocket.getOutputStream()));
String readLine = null;
while ((readLine = read.readLine()) != null) {
write.write(readLine);
write.flush();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void tearDownConnection() {
try {
write.close();
read.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客戶 :
public class Client {
Socket client = null;
BufferedReader reader = null;
BufferedWriter writer = null;
void connectToServer(String hostAddress, int port) {
try {
System.out.println("Client is waitting.");
client = new Socket(hostAddress, port);
reader = new BufferedReader(new InputStreamReader(
client.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(
client.getOutputStream()));
String readedLine = null;
readedLine = reader.toString();
while ((readedLine = reader.readLine()) != null) {
System.out.println(readedLine);
}
} catch (UnknownHostException e) {
System.out.println("Host name is unkown.");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
void tearDownConnection() {
try {
if (client != null) {
client.close();
}
if (writer != null) {
writer.close();
}
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
客戶端正在等待一行(即由返回/換行符終止),而服務器不發送此行。 您可以在服務器中自己添加換行符:
while ((readLine = read.readLine()) != null) {
write.write(readLine+"\n");
write.flush();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.