【发布时间】:2013-02-06 03:03:33
【问题描述】:
我正在尝试编写一个 java 程序来通信/控制连接在我的 LAN 中的网络设备。网络设备有一个 web-GUI 并使用 TCP,我尝试使用 java 套接字与设备建立连接,但设备在建立后不断重置连接。
我正在尝试使用wireshark/netcat/tcpflow 来嗅探web-GUI 和设备之间的数据,但是wireshark 被数据淹没了,我还在netcat/tcpflow 上阅读,找不到简单的教程。
我只是想知道是否有人可以给我一些亮光让我滚动。
提前致谢
这是我尝试过的代码
import java.io.*;
import java.net.*;
import java.util.*;
class draft{
public static void main (String args[]) throws Exception{
String data;
String host = new String ("192.168.100.223");
int port = 80;
Socket ndsocket = new Socket(host, port);
DataOutputStream outToServer = new DataOutputStream(ndsocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader (new InputStreamReader(ndsocket.getInputStream()));
来自wireshark,它使用HTTP 1.1,我应该使用类似的东西来强制http 1.1连接吗?
con_out = connection.getOutputStream();
con_in = connection.getInputStream();
PrintWriter out_writer = new PrintWriter(con_out, false);
out_writer.print("GET / HTTP/1.1\r\n");
out_writer.print("Host: thehost\r\n");
out_writer.print("\r\n");
out_writer.flush();
从 tcpflow,我可以看到它发回了一个 http 页面更新,所以我必须以某种方式解析我需要的代码,但首先需要让连接正常工作。
而且我不能一直使用该设备(它在我兄弟的房子里),所以我可能无法像我喜欢的那样经常测试建议。
对不起,如果我是一个菜鸟,因为我没有编写自己的程序的经验,谢谢你再次提供帮助。
【问题讨论】:
-
请展示一些你如何连接到服务器的代码
-
@jdevelop 我不介意代码,但这确实是一个毫无意义的问题。
new Socket(host, port)或SocketChannel.open(host, port).的连接方式肯定与连接重置无关。 -
@EJP 他可能会使用一些默认使用 HTTP 1.0 的 HttpConnector 或类似的东西。并且连接重置可能会发生,因为服务器在此标头之后关闭了套接字。
-
@jdevelop 好吧,他可能会,但他没有在任何地方提到 J2ME。可以想象他也在使用 URL/HttpURLConnection,但在这种情况下,我希望它能够工作,前提是当然另一端有 HTTP ;-)
-
其实我根本不介意J2ME,我在考虑Apache Commons。无论如何,看起来问题不完整且不具体,因此需要结束。
标签: java sockets tcp network-programming network-protocols