我正试图自己学习Socket.关注Oracle网站上的文字我有点困惑.我对此有一些疑问.提前感谢任何明确的解释.
setSoTimeout
public void setSoTimeout(int timeout)抛出SocketException
使用指定的超时启用/禁用SO_TIMEOUT,以毫秒为单位.如果将此选项设置为非零超时,
read()则InputStream与此Socket关联的调用将仅阻止这段时间.如果超时到期,java.net.SocketTimeoutException则会引发a,尽管Socket仍然有效.必须在进入阻止操作之前启用该选项才能生效.超时必须> 0.超时为零被解释为无限超时.
套接字是连接的端点.如果我说
mySocket.setSoTimeout(2000);
Run Code Online (Sandbox Code Playgroud)
这是否意味着我阻止从服务器/客户端读取此套接字的任何输入2000毫秒,在此之后套接字已准备好读取数据?
超时到期是什么意思?
在阻止操作之前必须启用哪个选项?
无限超时意味着套接字不再读取?
我已经阅读并成功使用?connectionsR但我真的不明白它们是什么.
我知道我可以下载文件,读取和写入压缩文件,...(这是我理解使用连接的结果(打开,做东西,关闭),但我真的不明白他们实际做了什么,为什么你必须打开和关闭它们等等).
我希望这也能帮助我理解如何更有效地使用它们(主要是理解正在发生的事情的机制,以便在有些事情不能正常工作时我能有效地进行调试).
我正在做一个将一些数据写入mongodb的python脚本.完成后,我需要关闭连接并释放一些资源.
如何在Python中完成?
我有一个经常访问本地sqlite3数据库的android应用程序,出于性能考虑,所以我始终保持连接打开.但我的一位朋友建议我每次操作都要打开/关闭连接.
1)你们对这两种方法的看法是什么?利弊/利弊.2)我做了一些测试,发现数据库连接没有太多的性能开销.DB连接的性能开销是否因DB的大小而异?
我正在用MySQL构建一个网站.我正在使用TOAD for MySQL,突然间我无法连接到数据库,因为我收到错误:
"太多联系"
在Toad for MySQL中是否有任何方法可以查看现有连接以便能够杀死它们或简单地关闭所有连接?
这个问题在SO中被问了好几次,在其他网站上已经多次询问过.但我没有得到任何令人满意的答案.
我的问题:
我有一个java Web应用程序,它使用简单的JDBC通过Glassfish应用程序服务器连接到mysql数据库.
我在glassfish服务器中使用了以下配置的连接池:
初始池大小:25
最大池大小:100
池大小调整数量:2
空闲超时:300秒最长
等待时间:60,000毫秒
该应用程序已经部署了3个月,并且运行良好.
但是从最近2天开始,登录时会出现以下错误.
部分StackTrace
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:
** BEGIN NESTED EXCEPTION **
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.io.EOFException
MESSAGE: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
STACKTRACE:
java.io.EOFException: Can not read response from …Run Code Online (Sandbox Code Playgroud) 最近我在我的 Windows 机器上安装了WSL Ubuntu 18.04,但似乎没有任何工作正常,因为我无法访问互联网。
我尝试了一些命令并sudo apt update说“连接失败”并且ping google.com字面上需要永远,正如您在此屏幕截图中看到的那样:

我还检查nano /etc/resolv.conf并确保名称服务器是正确的,完全禁用了卡巴斯基及其防火墙,禁用了 Hyper-V,重新安装了几次 WSL,甚至禁用了 Windows Defender。没有任何帮助。
那么你有什么想法可能是这里的问题吗?
connection ubuntu windows-subsystem-for-linux failed-to-connect
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
at com.sun.proxy.$Proxy0.notifyMe(Unknown Source)
at CallbackServerImpl.doCallback(CallbackServerImpl.java:149)
at CallbackServerImpl.registerForCallback(CallbackServerImpl.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at …Run Code Online (Sandbox Code Playgroud) 以下代码:
Class.forName("com.mysql.jdbc.Driver");
Connection m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root");
Run Code Online (Sandbox Code Playgroud)
抛出此异常getConnection():
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2397)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at db.Database.<init>(Database.java:91)
at db.Main.main(Main.java:10)
Run Code Online (Sandbox Code Playgroud)
这是怎么造成的,我该如何解决?
编辑:
public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException
{ …Run Code Online (Sandbox Code Playgroud)