我想开发一个允许我在线程上运行套接字的类,并且在任何时候都允许我通过它发送数据,以及在数据到达时接收通知。应该假定没有的东西,如仅在接收到的消息已发送第一消息后,等 由于某种原因,下面的代码被打印为仅第一请求的响应:我的套接字客户端似乎只接收来自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
感谢