Tag: sockets

通过对等方重置连接:套接字写入错误。 我的Java代码有什么问题

我试图从独立的Java应用程序创建和维护到主机的TCP连接。 本地端口和服务器端口相同= 8999.连接后,我必须向服务器发送一个消息: username=fred&password=abcd 。 套接字创建和消息发送的代码如下: Socket socket = new Socket(“mshxml.abcd.com”, 8999, InetAddress.getLocalHost(), 8999); OutputStream outStream = socket.getOutputStream(); while (socket.isConnected()) { try { int stx = 2, etx = 3; DataOutputStream dout = new DataOutputStream(outStream); dout.writeByte(stx); dout.writeBytes(“username=fred&password=abcd”); dout.writeByte(etx); } catch (Exception e) { e.printStackTrace(); } 但这种联系并不存在。 在调试时,我发现以下错误: java.net.SocketException: Connection reset by peer: socket write error […]

是否有解决方法:java.lang.RuntimeException:无法生成DH密钥对

我正在测试Java应用程序。 我正在尝试使用DH密码套件启动SSL握手。 但我收到以下错误: java.lang.RuntimeException: Could not generate DH keypair 有些人建议使用BouncyCastle ,但很多人都报告了它的错误,所以如果有另一种选择,我不鼓励使用它。 有人建议从http://www.oracle.com/technetwork/java/javase/downloads/index.html下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 。 我确实在C:\Program Files (x86)\Java\jre7\lib\security替换了以下两个文件java.security和java.policy 。 请注意,我还注意到我安装了Java\jre7\security : Program Files (x86)和Program Files ,我替换了它们。 但是,我仍然看到同样的错误。 这个错误有没有解决方法? 编辑:堆栈跟踪: javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair at sun.security.ssl.Alerts.getSSLException(Unknown Source) at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) at sun.security.ssl.SSLSocketImpl.handleException(Unknown Source) at […]

kafka.consumer.SimpleConsumer:由于套接字错误而重新连接:java.nio.channels.ClosedChannelException

我正在为kafka运行一个简单的消费者,例如: int timeout = 80000; int bufferSize = 64*1024; consumer = new SimpleConsumer(host, port,timeout, bufferSize, clientName); 这运行好几个小时,但我稍后在kafka.consumer.SimpleConsumer上得到一个例外:由于套接字错误重新连接: java.nio.channels.ClosedChannelException 和消费者停止……以前有人遇到过这个问题吗?

如何从服务器获取客户端套接字的确认?

我有一个客户端套接字,它向服务器发送消息。我想在服务器收到消息时在客户端获得确认。 是否有可能获得该确认。 我使用apache mina开发了客户端。 提前致谢。

Socket.connect()到0.0.0.0:Windows与Mac

想象一下以下代码: String hostName = “0.0.0.0”; int port = 10002; int timeout = 5000; Socket socket = new Socket(); socket.connect(new InetSocketAddress(hostName, port), timeout); 在Mac上它工作正常并执行连接(即使没有在端口10002上运行),在Windows上我得到以下exception: java.net.SocketException: Permission denied: connect 这有什么区别以及Windows上的替代方案是什么? 这用于unit testing。 问候 乔纳斯

Java TLS套接字:找不到可信证书

让我快速解释一下我正在做什么。 我正在尝试在java中构建我自己的Apple推送通知服务(用于测试目的)。 这项服务得益于TLS套接字。 我有一个java客户端来创建一个TLS套接字来向APN发送推送通知。 我更改了主机URL以将套接字重定向到localhost:2195。 现在我正在尝试编写一个java套接字服务器来获取通知请求。 但是,我在握手期间遇到exception,无法找到解决方法。 注意:我在双方都使用相同的证书,它是一个标准的.p12文件,用于向APN发送推送通知。 这是客户端(简化): KeyStore ks = KeyStore.getInstance(“PKCS12”); ks.load(new FileInputStream(certificatePath), password.toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance(“sunx509”); kmf.init(ks, password.toCharArray()); TrustManagerFactory tmf = TrustManagerFactory.getInstance(“sunx509”); tmf.init((KeyStore)null); SSLContext sc = SSLContext.getInstance(“TLS”); sc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); SSLSocketFactory ssf = sc.getSocketFactory(); SSLSocket socket = (SSLSocket) ssf.createSocket(InetAddress.getLocalHost(), 2195); socket.startHandshake(); 这是服务器: KeyStore ks = KeyStore.getInstance(“PKCS12”); ks.load(new FileInputStream(certificatePath), password.toCharArray()); KeyManagerFactory kmf […]

BufferedReader直接到byte

有没有可能我的后续BufferedReader能够将输入直接放入byte []? public static Runnable reader() throws IOException { Log.e(“Communication”, “reader”); din = new DataInputStream(sock.getInputStream()); brdr = new BufferedReader(new InputStreamReader(din), 300); boolean done = false; while (!done) { try { char[] buffer = new char[200]; int length = brdr.read(buffer, 0, 200); String message = new String(buffer, 0, length); btrar = message.getBytes(“ISO-8859-1”); int i=0; for (int […]

套接字:BufferedReader readLine()块

我正在使用BufferedReader.readLine()方法从远程服务器读取响应(用C语言编写,我无法访问源代码)。 BufferedReader br = new BufferedReader(new InputStreamReader(in)); String line; while((line = br.readLine())!=null){ […] } 但它总是阻塞在最后一行,直到它超时。 所以我使用了以下代码: int b; while(true){ b = in.read; […] } 我发现读取的最后一个字节的整数值为13,我认为这是一个回车,对吗? 那么为什么readLine方法会阻塞? 服务器通常如何发出信号流的结束信号? 谢谢。

打开和关闭SSLSocket没有写入任何数据时出错

简单的服务器 listen = getServer(); Logger.getAnonymousLogger().info(“Listening to “+listen.toString()); SSLSocket client = (SSLSocket)listen.accept(); // adding this line fixes everything – client.write(42); client.close(); 和一个简单的客户 SocketFactory sockMaker = SSLSocketFactory.getDefault(); Socket server = sockMaker.createSocket(“localhost”, 1443); int retval = server.getInputStream().read(); assert retval == -1; server.close(); 如果我没有向SSL Socket写入任何内容,则会在客户端抛出exception: Exception in thread “main” javax.net.ssl.SSLException:\ Received close_notify during handshake at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190) 我不明白为什么会这样。 SSL / […]

如何解决SSL“坏记录MAC”exception

我正在使用Apache CXF客户端,在Windows Java 1.6.0_29-b11 VM中运行以连接到IBM大型机(我相信它是zSeries),并调用在那里运行的SOAP Web服务。 连接是通过SSL / TLS完成的,大部分时间都可以正常工作。 但是,我有时会使用bad record MAC消息进行SSLexception。 以下是使用javax.net.debug属性的程序输出。 2011-11-16 12:32:37,731 INFO LoggingOutInterceptor: Outbound Message ————————— ID: 29 Address: https://1.2.3.4/access/servlet/blabla.atk123 Encoding: UTF-8 Content-Type: text/xml Headers: {Accept=[*/*], SOAPAction=[“Blablaaction/ATK123.Execute”]} Payload: WA543219999 ————————————– pool-1-thread-1, setSoTimeout(30000) called pool-1-thread-1, WRITE: TLSv1 Application Data, length = 321 pool-1-thread-1, WRITE: TLSv1 Application Data, length = 262 pool-1-thread-1, READ: […]