我想開發一個允許我在線程上運行套接字的類,並且在任何時候都允許我通過它發送數據,以及在數據到達時接收通知。應該假定沒有的東西,如僅在接收到的消息已發送第一消息後,等 由於某種原因,下面的代碼被打印爲僅第一請求的響應:我的套接字客戶端似乎只接收來自HTTP服務器的第一個響應。爲什麼?
public static void main(String[] args) throws IOException {
TCPClient client = new TCPClient(new TCPClientObserver());
client.connect("www.microsoft.com", 80);
sleep(1000);
client.send("HTTP GET");
sleep(5000);
client.send("XYZ");
}
打印
echo: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
echo: <HTML><HEAD><TITLE>Bad Request</TITLE>
echo: <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
echo: <BODY><h2>Bad Request - Invalid URL</h2>
echo: <hr><p>HTTP Error 400. The request URL is invalid.</p>
echo: </BODY></HTML>
這裏是插座的核心邏輯:
echoSocket = new Socket("www.microsoft.com", 80);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
while (true) {
String response = in.readLine();
if (response != null)
System.out.println("echo: " + response);
}
我想問題出在我的循環?
我的應用程序的完整測試代碼可以在這裏看到: http://codepad.org/bmHwct35
感謝