我最近在学习如何创建连接到网络服务器的套接字。我已经成功地用Java写一点东西:基本PUT,来自http服务器的GET请求
BufferedReader inUser = new BufferedReader(new
InputStreamReader(System.in));
Socket clientSocket = new Socket("www.google.com", 80); // url expected
DataOutputStream outServer = new DataOutputStream
(clientSocket.getOutputStream());
BufferedReader inServer = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
String sentence = inUser.readLine();
outServer.writeBytes(sentence + '\n');
String modifiedSentence = inServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
inUser.close();
outServer.close();
inServer.close();
clientSocket.close();
我还使用一个socketTest程序(从http://sockettest.sourceforge.net/)来测试我的客户。连接看起来很好,我可以使用sockettest接收和发回消息(通过托管本地服务器)。当我尝试向web服务器发送一个字符串(在我的java代码中它被命名为'sentence')时,它会按照预期返回不正确的随机输入请求,如'sd'或'a'。但是,当我输入我希望收到反馈的查询时,我什么也收不到。可以肯定的,这就是我把(存储在“一句话”):
GET index.html http/1.0
要么我应该得到,如果它存在的文件或异常,如果出事了,对不对?我没有收到任何东西。更奇怪的是,我注意到,第一次给我输入时,我只需要确保我有3个独立的随机字符串(用空格分隔)将它接受为有效输入。随后我输入的任何随机输入,如'sd'也将被接受。
我做的另一个观察是程序继续运行。通常我应该阅读一行,然后程序停止。这意味着它无法读取任何内容。
我对所有尝试过的页面都使用端口80。这里有一小部分网站列表我试图执行查询: - www.google.com - en.wikipedia.org - www.cracked.com
我已经尝试了其他几个设置为教程的唯一目的。我为什么不收到任何东西?当我用telnet尝试时,有些似乎可行(尽管www.google.com总是返回发现的xxx错误)。