基础连接已经关闭: 服务器关闭了本应保持活动状态的连接
**_************** 异常文本 **************
System.Net.WebException: 基础连接已经关闭: 服务器关闭了本应保持活动状态的连接。 ---> System.IO.IOException: 无法从传输连接中读取数据: 您的主机中的软件中止了一个已建立的连接。。 ---> System.Net.Sockets.SocketException: 您的主机中的软件中止了一个已建立的连接。
   在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   在 System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
   在 System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
   在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
   在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   在 SendClient.WebReference_PACS.Service1.addImage(String ConID, String SOPInstanceUID, String filename)
   在 SendClient.Form1.addImage(String ConID, String SOPInstanceUID, String filename)
   在 SendClient.Form1.button_newcon_send_Click(Object sender, EventArgs e)
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   在 System.Windows.Forms.Button.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)*

     ************** 已加载的程序集 **************

网上很多都是说在Reference.cs里面添加
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest webRequest = (HttpWebRequest)
base.GetWebRequest(uri);
 webRequest.KeepAlive = false;
return webRequest;
}

但是添加了一直提示“错误 52 应输入 class、delegate、enum、interface 或 struct ”

c#
ywt348861900
ywt348861900 已解决~
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#调用C++dll基础连接已经关闭: 服务器关闭了本应保持活动状态的连接
使用C#调用C++DLL来实现WebService,在本机可以运行,当这个服务部署在本机可以正常执行,部署在服务器上就报“基础连接已经关闭: 服务器关闭了本应保持活动状态的连接”错误。在服务器上部署时不调用这个DLL中的函数就不会报错,求大神指点
Java远程连接操作服务器,并取得服务器的端口,内存硬件等信息(求代码)
请教高手: 用Java实现远程连接操作服务器(知道服务器的IP,账户和密码),对服务器进行关闭和重启操作,并可以获得服务器的端口状态,内存,CPU,硬件,操作系统的信息。
echo测试服务器和客户端,大量连接失败,关闭时又会出现僵尸established连接
写了个测试客户端和服务器,服务器使用IOCP,客户端使用select。客户端开始时指定开启512个socket连接服务器。连接失败则重新连接,连接成功,则发送数据到服务器。服务器收到数据就回复同样的字符给客户端。 但是出现以下情况: 1.客户端开启512个连接,只有一部分连接的上。错误的提示是10060,连接超时,服务器accept的错误是64(网络明不再可用)。 感觉是不是,服务器连接上了,没来及处理,导致客户端删除,服务器处理时,又晚了。有没方法解决?一开始猜测是不是select后,在exceptfdset中可以不用理他,继续投递,测试后感觉又不是这个样子。因为,我这样测试:把select等待时间弄成0,0即刻返回,但是accept也有既不是成功也不是except中,说明不出错是会去等待的,不是非成功就失败的。但这种TimeOut是正常的吗?可以把这个TimeOut时间调长点吗? 2.客户端关闭后,他的一部分socket关不掉,服务器上netstat查看发现有部分established连接依旧在。 是不是客户端某些连接关闭时发送的FIN丢失或未发送?我认为如果对这种对端实际关闭的established连接,进行send,投递后,会返回错误,因为我认为send后会得到回馈,就如syn-ack一样。但是测试后发现,send居然还是可以成功,搜索网络后,得到的结论是,send,仅仅是发送到系统缓存,成功只是说明发送到缓冲区了,对端收得到否,得不到回馈。不知这个结论是不是正确的?这种僵尸established连接是不是有可能在对端不正常关闭(拔网线等极端状态)时存在?目前我使用开启keep-alive选项解决。这种僵尸established连接,程序会稍后recv得到通知而断开。 最后,经过分析和实验,我感觉,以上的问题是网络不可阻的问题,最后我只是在程序中为每个连接开启了keep alive的选项。
FTP上传文件连接超时,本地无问题,服务器上面连接超时
本地同样的FTP账号信息。上传几遍都没问题,但是放服务器上面上传一直连接超时,上传的是压缩包, 服务器防火墙已经关闭,但是看FTP状态是200链接上的,就上传这一步连接超时 代码和错误如下![图片说明](https://img-ask.csdn.net/upload/201912/28/1577522738_118588.png)![图片说明](https://img-ask.csdn.net/upload/201912/28/1577522744_867074.png)
FTP上传文件连接超时,本地没问题,服务器上面连接超时
本地同样的FTP账号信息。上传几遍都没问题,但是放服务器上面上传一直连接超时,上传的是压缩包, 服务器防火墙已经关闭,但是看FTP状态是200链接上的,就上传这一步连接超时 代码和错误如下11 ![图片说明](https://img-ask.csdn.net/upload/201912/25/1577241209_970023.png)![图片说明](https://img-ask.csdn.net/upload/201912/25/1577241214_315959.png)
android 客户端socket连接服务器,socket何时close
假设socket连接好了,现在客户端向服务器发送完了数据,这个时候需要关闭socket吗? 如果关闭后,某个时候又需要发送其他数据,再建立连接? 还是说建立通信协议,一次socket连接后一直保持通信状态,根据通信协议对不同的数据进行不同的处理,然后等客户端程序退出时再关闭socket。
求帮助!!ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。
今天用iis打开发布的网页程序出现了以下错误,求大佬给解决。。。 “/”应用程序中的服务器错误。 ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。 行 38: String sql = “select * from oilwelldata”; 行 39: SqlCommand sqlComm = new SqlCommand(sql, conn); 行 40: SqlDataReader reader = sqlComm.ExecuteReader();(提示是这行错了!!!) 行 41: String result = “”; 行 42: int i = 0; 我该怎么改啊,求帮助
sqlserver2012无法通过jdbc连接MyElicpse 求个大神
使用sqljdbc.jar连接jdbc时: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。 代码如下: String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//驱动器 String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=xxxx"; String user = "sa";//用户名 String password = "sa";//密码 try { Class.forName(driver); // 加载数据库驱动 // 构建连接 Connection conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); 防火墙已经关闭 没有阻止接口 telnet localhost 1433是通的 但是127.0.0.1 1433就提示连接端口:1433 失败 ping 127.0.0.1是没问题的 C盘etc/hosts中的对应localhost与127.0.0.1的内容为: # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost Sqlserver配置器已经打开 IIPALL的固定端口是1433 一直保持侦听状态 只有一个实例MSSQLSERVER windows事件日志上的错误是:服务器无法在 'any' <ipv4> 1434 上侦听。错误: 0x277a。若要继续,请通知您的系统管理员。 查看sqlserver 2012日志错误如下: Server failed to listen on 'any' <ipv4> 1434. Error: 0x277a. To proceed, notify your system administrator 错误: 26024,严重性: 16,状态: 1。 电脑已经重装成win7了 还是这个问题 sql可以和visual studio 2012连接 但是无法和MyElicpse连接 在cmd中执行netstat -ano 只有TCP [::]:1433接口在监听 找不到0.0.0.0:1433和127.0.0.1:1433这两个接口 1434只有UDP [::]:1434和0.0.0.0:1434 执行tasklist|findstr 2448(1433端口PID) 显示进程为sqlservr.exe 1433没有被占用 使用的jar包是sqljdbc4.jar ![图片说明](https://img-ask.csdn.net/upload/201610/01/1475290507_428583.png) ![图片说明](https://img-ask.csdn.net/upload/201610/01/1475290521_744595.png) ![图片说明](https://img-ask.csdn.net/upload/201610/01/1475290568_511606.png) ![图片说明](https://img-ask.csdn.net/upload/201610/01/1475290580_258520.png) ![图片说明](https://img-ask.csdn.net/upload/201610/01/1475290588_54854.png) 在之前使用win8的时候 有段时间是可以连接的 当时没有加入tomcat 大约有2到3个月没有使用这个jdbc 再拿出来学习jsp的时候 就一直提示这个错误 因为我要使用tomcat做jsp 要连接jdbc 所以这个问题很急 求大神解决一下啊 重装了好几次系统了 要崩溃了
服务器端F5负载均衡的问题
公司关于移动APP业务有两台服务器A和B,做过F5负载均衡部署,但是现在遇到一个问题:两台服务器都正常运转时,A、B都有一定数量的连接数且服务正常;**但是当A关闭时,B不能提供正常服务,APP端报错为:无法连接到服务器**;当B关闭时,A可以提供正常服务。这是什么原因?(因为本人没有权限查询服务器状态,目前推测是配置问题)
FileZilla连接失败,connection refused
本人Linux小白,望轻喷 我用visualbox配置了一台Ubuntu16.04的虚拟机,今天想用FileZilla传一些文件给虚拟机,发现连接失败。 错误信息是: ``` 状态: 正在连接 192.168.3.5... 响应: fzSftp started, protocol_version=5 命令: open "jeloys@192.168.3.5" 22 错误: Network error: Connection refused 错误: 无法连接到服务器 ``` 然后尝试了网上所说的开启ssh 和 sshd 没有用,防火墙已经关闭,iptables也已经为ssh设置好了。然后在虚拟机上使用 ``` root@jeloys-VirtualBox:~# ssh 192.168.3.4 ``` 提示: ``` ssh: connect to host 192.168.3.4 port 22: Connection refused ``` 注:宿主ip为192.168.3.4;虚拟机IP为192.168.3.5;虚拟机网络为桥接模式。 求各位大佬答疑解惑~
一个小问题 关于struts 自身的连接池。
环境:[b]struts1.1, Oracle, 一台数据库服务器, 一台应用服务器[/b] 使用struts的连接池 ,当应用启动后 ,[color=red]拔掉服务器网线 ,再插上网线[/color], 此后池中获取的连接[[i]conn=dataSource.getConnection();][/i] 进行各种操作时 [[i]如 pStament=conn.prepareStatement(strSql);][/i] 会抛出异常,提示[color=red]关闭的连接[/color] 即使在actioin中初始化新的连接池 [[i]DataSource dataSource=this.getDataSource(request,key);][/i] 除非重起应用,才会正常。 这是不是struts连接池自己的原因? debug查看conn的状态不为空,也不是closed。 [b]问题补充:[/b] DataSource != 连接池。 对不起,说错了 。 那为什么重新插上网线后 再 DataSource dataSource=this.getDataSource(request,key); conn=dataSource.getConnection(); 会是个关闭的连接呢。
在TCP服务器端中这段代码有什么用try { if (reader != null) { reader.close(); // 关闭流 } if (socket != null) { socket.close(); // 关闭套接字 }
package p349; import java.io.*; import java.net.*; public class MyTcp { // 创建类MyTcp private BufferedReader reader; // 创建BufferedReader对象 private ServerSocket server; // 创建ServerSocket对象 private Socket socket; // 创建Socket对象socket void getserver() { try { server = new ServerSocket(8997); // 实例化Socket对象 System.out.println("服务器套接字已经创建成功"); // 输出信息 while (true) { // 如果套接字是连接状态 System.out.println("等待客户机的连接"); // 输出信息 socket = server.accept(); // 实例化Socket对象 reader = new BufferedReader(new InputStreamReader(socket .getInputStream())); // 实例化BufferedReader对象 getClientMessage(); // 调用getClientMessage()方法 } } catch (Exception e) { e.printStackTrace(); // 输出异常信息 } } private void getClientMessage() { try { while (true) { // 如果套接字是连接状态 if (reader.ready()) { // 获得客户端信息 System.out.println("客户机:" + reader.readLine()); } } } catch (Exception e) { e.printStackTrace(); // 输出异常信息 } try { if (reader != null) { reader.close(); // 关闭流 } if (socket != null) { socket.close(); // 关闭套接字 } } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // 主方法 MyTcp tcp = new MyTcp(); // 创建本类对象 tcp.getserver(); // 调用方法 } }
jdbc连接不上数据库(oracle、mysql)
服务部署在服务器上一个多月后,最近突然就连不上mysql数据库,使用navicat可以连接上数据库,服务连接不上。然后尝试用oracle数据库试了下,sqldeveloper连接不上,使用sqlplus可以正常连接。检查了防火墙都是关闭状态,用telnet 可以ping 通端口。求各位大神解答,解决送高分
服务器挂载大量close_wait无法断开
使用netty实现websocket,在网页关闭的时候断开连接,采用的是H5版本的,微信浏览器,在ios系统下离开页面的时候会出现原链接状态变为close_wait状态而不会断开,在安卓版本下不会出现这种情况 大概的情况是这样的 ![图片说明](https://img-ask.csdn.net/upload/201809/13/1536839036_917725.jpg) 代码是这样的,hander这边基本没有其他业务的东西,业务方面都放线程池执行了, 抓包情况分析 ![图片说明](https://img-ask.csdn.net/upload/201809/13/1536840275_123782.jpg) 15570->80端口的,80端口是服务器的端口,这里的是客户端向服务端发送fin,服务端立刻返回ack,但是属于服务端的fin却一直不会发送过来,,这个抓包是我在服务器上用tcpdump抓的网卡的数据流量情况,在本地直接用wireshark抓包也是差不多的情况。 而根据服务器的挂载情况显示挂载nginx上面,我直接关闭服务也不会断开连接,只有重新加载nginx配置或者nginx进行重启才会把close_wait状态修改为last_ack状态,。 还有一个情况就是,这个服务器暂时只有我一个人在使用没有对外开放,所以应该也不存在什么阻塞的情况
在后台用Java刷新网页的问题
是这样的,我在后台用Java获取了建立在Weblogic上的数据源,并用它来连接别的数据库取数。 但是这数据库连接有超时的控制。隔一段时间不动(Inactive),再刷新,就会报错说连接已关闭。只有重启Weblogic服务才能从新连接上数据库。 目前我自己的解决方法是:在前台JSP页面上弄个自动刷新的控制,每10分钟就刷新一次页面,这样可以保持数据库连接一直是活动状态。 但是问题又来了:必须是开着浏览器开着页面,这段刷新的代码才会被执行。如果我关闭浏览器了,就不能自动刷新了。 这样的悲剧体现在:需要一直在服务器上开着一个网页负责刷新页面;如果重启服务器了,不但要开Weblogic的服务,同时也要再开一个页面来刷新网页…… 如果可以在后台用Java刷新网页或者数据库连接,那就最好了。 请问各位大侠有什么高明的解决方法么?
mysql 和proxool 数据库连接池的问题(连接定时递增)
我在Struts2.0 + Spring2.0 + hibernate3.2的应用中采用了proxool 数据库连接池。 proxool.xml的配置如下: <?xml version="1.0" encoding="utf-8"?> <something-else-entirely> <proxool> <alias>test</alias> <driver-url>jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&amp;characterEncoding=utf-8</driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="root"/> <property name="password" value="root"/> </driver-properties> <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> <house-keeping-sleep-time>90000</house-keeping-sleep-time> <prototype-count>5</prototype-count> <maximum-connection-count>100</maximum-connection-count> <minimum-connection-count>10</minimum-connection-count> </proxool> </something-else-entirely> 在applicationContext.xml中 <!-- Hibernate-Spring配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="mappingResources"> <list> <value>com/test/User.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.connection.autocommit">true</prop> <prop key="hibernate.connection.release_mode">after_statement</prop> <prop key="hibernate.bytecode.use_reflection_optimizer">true</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> <prop key="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop> <prop key="hibernate.proxool.xml">proxool.xml</prop> <prop key="hibernate.proxool.pool_alias">test</prop> </props> </property> </bean> MySqL 的 my.ini 配置参数 max_connections=500 interactive_timeout=10000000 wait_timeout=10000000 proxool 的 maximum-connection-lifetime(连接最大生命时间)默认4小时,发现每隔4个小时,通过show status命令查看MySQl 的Connections 增加10个,很快就会到达max_connections的最大限制,虽然可以把max_connections设置为16000,但是这只是延长出问题的时间而已。请各位遇到这样情况的朋友指导如何解决? MySQL 版本5.0和4.1都试过,proxool 版本为 proxool-0.9.0RC3。 [b]问题补充:[/b] 蔡华江:谢谢指点。我在数据库的查询、更新等方面都是通过hibernate来完成的,如查询用户 public User findUserByUsername(String username) { String queryStr=PropertyOwner.getKeyValue("getuserwithname"); Session session = this.getSession(); Query query=getQuery(queryStr,session); query.setString("username", username); if(query.list().size()>0) { User tmp=(User)query.list().get(0); this.closeSession(session); return tmp; } else { this.closeSession(session); return null; } } 在程序的最后都有this.closeSession(session);这样的语句,难道数据连接没有关闭? [b]问题补充:[/b] 现在我怀疑是 this.closeSession(session); 没有关闭连接。因为Session session = this.getSession(); 利用getSession强制获得了Hibernate的 Session,这个Session可能是当前事务中之前使用过的,或者可能是一个新的,并不在当前事务中,Spring只对当前事务中的Session 进行关闭。参考“spring整合hibernate关于session的管理”(http://solodu.iteye.com/blog/454469),我修改Session session = super.getSession(true);运行10分钟后还是递增连接。说明还有其他的数据库连接没有释放。查看Proxool的监控界面可以看到连接情况0 (active), 10 (available), 100 (max)。 我怀疑一个定时保存的地方有问题 try { otherDAO.updataOrSave(tmpp); } catch (Exception e) { } ......>跟踪 public void updataOrSave(T domainObject) throws Exception { saveOrUpdate((Object)domainObject); } ......>继续跟踪 protected void saveOrUpdate(final Object obj)throws Exception { run ( new TransactionRunnable () { public Object run (Session s) { saveOrUpdate(obj, s); return null; } }); } ......>继续跟踪 protected void saveOrUpdate(Object obj, Session s) { s.saveOrUpdate(obj); } 请问上述代码有问题吗? [b]问题补充:[/b] 现在我把定时保存部分关闭了,照样有此问题。 [b]问题补充:[/b] 经过多次试验,增加连接的地方是类似这样的hibernate的操作 public History queryHistory(String queryStr,String entity,Date time) { Session session = this.getHibernateTemplate().getSessionFactory().openSession();//该句照样增加连接数 //getSession();//该句照样增加连接数 Query query=super.getQuery(queryStr,session); int size=query.list().size(); if(size>0) { History temp=(History)query.list().get(0); session.close(); return temp; } else { session.close(); return null; } } [b]问题补充:[/b] 现在问题是Proxool连接池里的连接ID老是递增(通过Proxool监控界面看),连接数是没有超过最大连接。请问各位好手如何解决啊? [b]问题补充:[/b] 这个问题竟然是我的理解错了。 MySQL的SHOW STATUS提供服务器的状态信息: Connections 试图连接MySQL服务器的次数,是不断增加,不是真正的目前连接数(与MySqL 的 my.ini 配置参数 max_connections无关,好多人都理解错误)。 真正有用的是下述几个 Threads_created 表示创建过的线程数,该值太大,就要增加my.cnf中thread_cache_size的值 Threads_connected 当前打开的连接的数量。 Threads_running 不在睡眠的线程数量。 Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。 Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。 感谢蔡华江的指导。
关于tcp异常不能关闭的问题,求大神指点
问个问题,公司用rpc服务,当服务端kill掉进程,服务端发送fin码了,同一台服务器上的客户端调用的tcp能够如期正常的四次挥手关闭连接,但是另一台机器上客户端的tcp不能关闭,并且处于ESTABLISHED状态,用的长连接,希望能给点经验。
求助:netty 4.x服务器端出现CLOSE_WAIT的问题
**1.主题:**我最近用netty4.x 做了一个app服务端,在部署到服务器上之后出现了很多close_wait 状态的TCP连接 ,导致服务端卡住,不能再接收新的连接,但是换回本地测试又不会出现这样的问题。 **2.详细描述:** 1)当服务端出现卡住的情况时,使用netstat -ano 命令可以看到服务器的连接状态还是established,抓包也能看到客户端仍然在正常发送数据包,但是服务器只是回应了一个ACK(此时服务端已经卡住,控制台没有任何动作,也没有日志记录)。 ![图片说明](https://img-ask.csdn.net/upload/201807/12/1531381902_865010.jpg) 下面那一个是心跳包。 只要客户端不关闭连接,一直是established,直到客户端断开连接后,就变成了close_wait。只有一次服务端从这种“卡死”状态恢复,并且打印了日志(比如"用户的断开连接")。 一开始我以为是某一步阻塞,而导致了这个情况,于是又用jstack 命令查看了阻塞状态,转下节, 2) 显示结果: ![图片说明](https://img-ask.csdn.net/upload/201807/12/1531382616_657392.png) 3)在查看官方的使用手册和《netty 实战》中,有提到入站出站消息需要使用ReferenceCountUtil.release()进行,手动释放,但我的编解码器用的分别是ByteToMessageDecoder和MessageToByteEncoder,源码上这两个都进行了Bytebuf的释放处理, 所以问题应该不是出在这里吧..... 以下是编解码器的部分代码: encoder ``` @Override protected void encode(ChannelHandlerContext ctx, YingHeMessage msg, ByteBuf out) throws Exception { checkMsg(msg);// not null int type = msg.getProtoId(); int contentLength = msg.getContentLength(); String body = msg.getBody(); out.writeInt(type); out.writeInt(contentLength); out.writeBytes(body.getBytes(Charset.forName("UTF-8"))); } ``` decoder ``` //int+int private static final int HEADER_SIZE = 8; private static final int LEAST_SIZE = 4; private static final Logger LOG = LoggerFactory.getLogger(YingHeMessageDecoder.class); @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception { in.markReaderIndex();//第一次mark int readable = in.readableBytes(); LOG.info("check:{}", in.readableBytes() < HEADER_SIZE); LOG.info("readable:{}", readable); if (in.readableBytes() < HEADER_SIZE) {//消息过小回滚指针,不作处理 LOG.warn(">>>可读字节数小于头部长度!"); LOG.info("before reset:{}", in.readerIndex()); in.resetReaderIndex(); LOG.info("after reset:{}", in.readerIndex()); return; } //读取消息类型 int type = in.readInt(); int contentLength = in.readInt(); LOG.info("type:{},contentLength:{}", type, contentLength); in.markReaderIndex();//第二次mark int readable2 = in.readableBytes(); if (readable2 < contentLength) { LOG.error("内容长度错误!length=" + contentLength); in.resetReaderIndex();//重设readerIndex LOG.info("重设,当前readerIndex:" + in.readerIndex()); return; } //读取内容 ByteBuf buf = in.readBytes(contentLength); byte[] content = new byte[buf.readableBytes()]; buf.readBytes(content); String body = new String(content, "UTF-8"); YingHeMessage message = new YingHeMessage(type, contentLength, body); out.add(message); } ``` 下面是服务器启动类的配置: ``` public void run() throws Exception { EventLoopGroup boss = new NioEventLoopGroup(); EventLoopGroup worker = new NioEventLoopGroup(5); try { ServerBootstrap b = new ServerBootstrap(); b.group(boss, worker) .channel(NioServerSocketChannel.class) .option(ChannelOption.SO_BACKLOG, 1024) .option(ChannelOption.SO_REUSEADDR, true) .childOption(ChannelOption.TCP_NODELAY, true) .childOption(ChannelOption.SO_KEEPALIVE, true) .handler(new LoggingHandler(LogLevel.DEBUG)) .childHandler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ch.pipeline() .addLast(new LengthFieldBasedFrameDecoder(MAX_LENGTH, LENGTH_FIELD_OFFSET, LENGTH_FIELD_LENGTH, LENGTH_ADJUSTMENT, INITIAL_BYTES_TO_STRIP)) .addLast(new ReadTimeoutHandler(60)) .addLast(new YingHeMessageDecoder()) .addLast(new YingHeMessageEncoder()) .addLast(new ServerHandlerInitializer()) .addLast(new Zenith()); } }); Properties properties = new Properties(); InputStream in = YingHeServer.class.getClassLoader().getResourceAsStream("net.properties"); properties.load(in); Integer port = Integer.valueOf(properties.getProperty("port")); ChannelFuture f = b.bind(port).sync(); LOG.info("服务器启动,绑定端口:" + port); DiscardProcessorUtil.init(); System.out.println(">>>flush all:" + RedisConnector.getConnector().flushAll()); LOG.info(">>>redis connect test:ping---received:{}", RedisConnector.getConnector().ping()); f.channel().closeFuture().sync(); } catch (IOException e) { e.printStackTrace(); } finally { //清除 LOG.info("优雅退出..."); boss.shutdownGracefully(); worker.shutdownGracefully(); ChannelGroups.clear(); } } ``` 4)其他补充说明: 服务器为windows server 2012r; 客户端使用的C sharp编写; 服务端使用了Netty 4.1.26.Final,Mybatis,Spring,fastjson,redis(缓存),c3p0(连接池); 本地测试不会出现这种情况! 40c币奉上,还请各位大牛不吝赐教,救小弟于水火啊!
mysql集群数据节点被强制关闭
我再管理节点服务器查看节点连接状态时,显示数据节点连接上,sql节点没有连接上,但是随即又强制关闭了数据节点,报错信息如下,这是什么原因,怎么解决啊![图片说明](https://img-ask.csdn.net/upload/201906/21/1561083511_937490.png)
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
只因接了一个电话,程序员被骗 30 万!
今天想给大家说一个刚刚发生在我身边的一起真实的诈骗经历,我的朋友因此被骗走30万。注:为了保护当事人隐私,部分情节进行了修改。1平安夜突来的电话开始以为就像普通的诈骗一样,想办法让你把钱...
我一个37岁的程序员朋友
周末了,人一旦没有点事情干,心里就瞎想,而且跟几个老男人坐在一起,更容易瞎想,我自己现在也是 30 岁了,也是无时无刻在担心自己的职业生涯,担心丢掉工作没有收入,担心身体机能下降,担心突...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
【程序人生】程序员接私活常用平台汇总
00. 目录 文章目录00. 目录01. 前言02. 程序员客栈03. 码市04. 猪八戒网05. 开源众包06. 智城外包网07. 实现网08. 猿急送09. 人人开发10. 开发邦11. 电鸭社区12. 快码13. 英选14. Upwork15. Freelancer16. Dribbble17. Remoteok18. Toptal19. AngelList20. Topcoder21. ...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
立即提问