Tag: tcp

SocketException:尝试从Java中读取套接字时连接重置?

在使用Java套接字时遇到了一些烦恼,我的应用程序似乎在一个非常基本的层面上失败了。 我的部分应用程序需要跨TCP连接编写文件名。 接收者代码如下: ServerSocket serverSocket = new ServerSocket(4445); Socket socket = serverSocket.accept(); BufferedReader reader = new BufferedReader( new InputStreamReader(socket.getInputStream())); String filename = reader.readLine(); 我的发件人代码如下: Socket socket = new Socket(InetAddress.getLocalHost(), 4445); PrintWriter writer = new PrintWriter(socket.getOutputStream()); writer.write(“Test.jpg”); 非常非常基本的东西,但由于某种原因,我得到一个SocketException:连接重置当我运行它? 这是完整的堆栈跟踪: Exception in thread “main” java.net.SocketException: Connection reset at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at […]

更改.jar文件没有源?

我有一个基于Java的TCP客户端与我们的生产服务器对话,我正在重写。 客户端具有服务器的IP和端口硬编码。 我想要做的是将客户端中的IP地址更改为127.0.0.1并且我可以在我的开发框中使用相同的端口号。 这是擦,我没有所有的源代码,所以我不能只重新编译它。 写这篇文章的人已经在这里工作了大约四年,虽然我有他的硬盘驱动器,但我找不到编译的循环返回客户端(即使我找到了部分源代码),甚至还没有找到生产客户端的源代码。 我怀疑他在网络驱动器上编写了他的代码,并且在这几年中它已经丢失了。 有没有办法让我反编译客户端并重新编译该更改? hex或二进制编辑(我也没有技巧,我刚看到它完成了)? 也许WinRAR因为我的理解是.jar文件只是压缩文件? 或者,有什么方法可以从客户端捕获传出的TCP流量并将其重新路由到我的开发箱? 我无法取下生产服务器进行测试,如果没有修改后的客户端,将很难确保我模拟生产服务器对客户端的响应。 我找到了这篇SO文章: 从jar中反编译并重新编译单个文件 ,但是我不明白反汇编和反编译之间的区别,但是我找到了那里提到的实用程序JD。

TCP数据包在网络级合并

有人知道对方是如何以及为什么会收到合并的TCP数据包而不是单独的包? 我已经在套接字级别将TCP Nodelay设置为true,但tcpdump仍然将某些数据包视为已合并。 在发送了4个大小为310字节的成功数据包之后,我获得了3 x 1400字节而不是15 x 310字节。 这导致了一些重要的延迟。 谢谢。 http://www.2shared.com/photo/_bN9UEqR/tcpdump2.html s = new Socket(host, port); s.setTcpNoDelay(true); s.getOutputStream().write(byteMsg); s.getOutputStream().flush()

Arraylist通过java中的tcp?

如何通过Java中的tcp发送arraylist? 我需要发送一个整数的arraylist,从客户端到服务器,反之亦然。 Thanxx

java socket:在接受之前听?

上下文:由于DOS攻击,我在我的程序内存中的某个集合中有一张禁止ip地址的表。 我使用TCP服务器套接字,接受每个连接,然后检查IP地址,然后我关闭连接或继续处理客户端。 我想知道在Java中是否可以监听TCP服务器套接字上的连接,并接受或拒绝以某种方式建立tcp链接,给定请求客户端的IP地址。 我的意思是不必接受&关闭客户端套接字,这是我已经在做的事情。 谢谢。

用Java替换默认的DNS名称解析

我想改变JVM在HttpURLConnections中解析域名的方式。 我没有通过默认的TCP / IP堆栈访问DNS服务器,而是想编写自己的代码来解析域名。 有没有办法替换默认的名称解析机制?

通过我的程序路由所有数据包?

我想构建一个应用程序,通过我的应用程序路由所有网络流量(不仅仅是HTTP)。 基本上,我想要的是给我的应用程序的所有流量(它们永远不应该达到实际目标,我的应用程序应该处理这个),然后将其转发到服务器; 同样适用于输入,只需反转(服务器 – >应用程序 – >想要答案的程序)。 是否有任何库(或类似的东西)可以使创建应用程序更容易? 我正在寻找可以从Python或Java中使用的东西,但如果真的需要,我可以学习另一种语言。

在Java中读写TCP头(选项)

我要做的是:编写客户端和服务器,通过TCP用Java发送字符串,到目前为止使用Socket和Input- / Output-Streams没问题。 但是现在我想在tcp标题的“Options”字段中添加3个数字 。 我找不到任何有用的教程或其他关于如何自定义标题以及如何阅读它的内容。 有什么建议么?

Java TCP / IP套接字如何报告应用程序的传输成功或失败?

我遇到了Java TCP / IP套接字的问题:我的Java应用程序将无休止地继续将数据发送到服务器,即使服务器在此期间关闭(没有正确的TCP / IP断开连接)。 我使用以下代码发送数据: PrintWriter out = PrintWriter(socket.getOutputStream(), true); out.write(“text”); if (out.checkError()) { System.err.println(“Error sending string!”); } 在另一个Stack Overflow问题中 ,我找到了以下答案: TCP / IP(及其java套接字)将保证您成功发送数据或最终获得错误(在java的情况下例外)。 我的代码是否足以让我们了解TCP / IP堆栈无法成功发送我的字符串或我是否需要另外做一些事情? 顺便说一句:即使另一个问题相似,打开一个新问题是否正确? 它没有令人满意地回答我的问题,我只能添加一个新的答案,而不是一个新的评论。

Java HttpURLConnection InputStream.close()挂起(或工作时间太长?)

首先,一些背景。 有一个工作人员扩展/解决了一堆短URL: http://t.co/example -> http://example.com 所以,我们只是按照重定向。 而已。 我们不会从连接中读取任何数据。 在我们得到200之后,我们返回最终的URL并关闭InputStream。 现在,问题本身。 在生产服务器上,其中一个解析程序线程挂起在InputStream.close()调用内: “ProcessShortUrlTask” prio=10 tid=0x00007f8810119000 nid=0x402b runnable [0x00007f882b044000] java.lang.Thread.State: RUNNABLE at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.skip(BufferedInputStream.java:352) – locked (a java.io.BufferedInputStream) at sun.net.www.MeteredStream.skip(MeteredStream.java:134) – locked (a sun.net.www.http.KeepAliveStream) at sun.net.www.http.KeepAliveStream.close(KeepAliveStream.java:76) at java.io.FilterInputStream.close(FilterInputStream.java:155) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.close(HttpURLConnection.java:2735) at ru.twitter.times.http.URLProcessor.resolve(URLProcessor.java:131) at ru.twitter.times.http.URLProcessor.resolve(URLProcessor.java:55) at … 经过简单的研究,我了解到在调用skip()之前将其清理回连接池(如果设置了keep-alive?)。 我仍然不明白如何避免这种情况。 此外,我怀疑我们的代码中是否存在一些不良设计或JDK中存在问题。 所以,问题是: 是否可以避免挂在close() ? 例如,保证一些合理的超时。 是否可以避免从连接中读取数据? 记住我只想要最终的URL。 实际上,我认为,我根本不想调用skip() […]