网络编程
文章平均质量分 80
java小强
从今天起,站在架构的角度看问题
展开
-
编码实现MQ连接池实现JMS消息发送连接管理
今天来说一下在使用到MQ时如果使用MQ的链接池。之前我也是没有注意到MQ也是有连接池的,后来因为系统之前实现每次创建和关闭链接消耗资源、宕机频繁,所以领导要求解决我才接触到。我在网上看到的关于JMS的讲解还挺多,但是对于MQ连接池的讲解时大家都是讲如何在spring中配置连接池。首先采用spring配置后原系统加密配置的密码就成明文了,另外如果要改成spring发送那改动就大了。如果在不使用s...2011-12-29 14:38:28 · 382 阅读 · 0 评论 -
UDP 多线程服务端 和 简单客户端
首先来了解UDP协议的几个特性(1)UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当UDP它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。(2) 由于传输数据不建立连接,因此也就不需要维护连接状态...2012-11-15 16:48:00 · 478 阅读 · 0 评论 -
协议 232转网口中的RealCom协议
首先来说本人对硬件或者说是设备不是很了解,对于底层协议通信也只是皮毛今天就是表达一下因为遇到的问题学到的一点东西吧 我们本地通过TCP协议传输SNMP包到设备取数据,因为设备使用的都是串口,我们之间通信使用了一个协议转换器把串口和网口连接起来,但是发现一个问题就是我能给设备发数据,但是自己收不到数据经过抓包发现,每次返回的内容多出6个字节,问谁都不知道为什么会有这么个东西。我...2012-08-22 08:52:00 · 1031 阅读 · 0 评论 -
SNMP 修改SNMP4J消息内容 之TCP发送模式
之前写了一篇关于 SNMP 修改SNMP4J消息内容 的博客,但是当时只是针对UDP的,后来应用到TCP上后发现有一些问题,现在说一下解决方法上一篇连接地址:http://cuisuqiang.iteye.com/blog/1584391 使用TCP发送时,由于Socket不知道数据流的长度,所以要增加数据包长度到包上,这才是真正的需求,是我上次理解错了增加头信息与上一次一样...2012-08-23 16:57:05 · 328 阅读 · 0 评论 -
Mina TCP服务端客户端 示例
服务端代码:package com.xd.nms.example;import java.io.IOException;import java.net.InetSocketAddress;import org.apache.mina.core.buffer.IoBuffer;import org.apache.mina.core.service.IoHandlerAdapt...2013-06-24 17:36:39 · 419 阅读 · 0 评论 -
SNMP4J 服务端连接的超时时间
我们的网络管理中心作为管理中心,是服务端!各个被管设备通过交换机作为客户端与网管中心进行通信,使用的TCP/IP协议!SNMP只是一种协议包,SNMP4J作为SNMP使用的Java工具包,提供了方便安全的工具包功能! 但是在使用中发现一个问题就是,服务端与客户端发送消息时,发送数次后就不再发送数据了!网络抓包也抓不到,跟踪断点到SNMP4J的代码中发现了这样一个问题! /**...2012-09-25 16:56:35 · 802 阅读 · 0 评论 -
SNMP4J包 TCP-无超时-网络中断 处理的BUG
记得之前说过一次关于SNMP4J 服务超时时间的问题 SNMP4J 服务端连接的超时时间 ,由于我们想保持这个连接的持续性,除非异常否则不能在服务端主动切断连接。但是发现SNMP4J会主动丢掉一些连接,这个在日志中就能看到,这显然不合理。于是我设置了:transport = new DefaultTcpTransportMapping((TcpAddress) listenAddre...2013-01-15 10:26:19 · 404 阅读 · 0 评论 -
SNMP4J包 TCP-消息发送时的一个BUG
在实际使用中,发现这样的一个问题,客户端(工业级交换机)和本地服务端的连接总是中断,当然不是超时自动清理的。这个中断,有时可以建立上并能正常使用,有时连接上了却不正常使用这个连接。后台日志打印,明明连接已经存在却一直报错说是通道已经关闭。 经过多次测试和断点跟踪,发现交换机在一定时间不实用的话就认定连接中断,马上进行连接重建,而此时如果服务端正在给客户端发送消息,就会在一定几率上造...2013-01-15 11:12:18 · 317 阅读 · 0 评论 -
获取一个 Byte 的各个 Bit 值
1. bit:位 一个二进制数据0或1,是1bit;2. byte:字节 存储空间的基本计量单位,如:MySQL中定义 VARCHAR(45) 即是指 45个字节; 1 byte = 8 bit3. 一个英文字符占一个字节; 1 字母 = 1 byte = 8 bit4. 一个汉字占2个字节; 1 汉字 = 2 byte = 16 bitbyte:一个字节(8位)...2012-10-11 09:48:44 · 3239 阅读 · 0 评论 -
协议使用OCTET,请指定具体语意
在看公司一个关于某协议的文档时,看到一个字段的定义是 OCTET8 ,当时我很诧异,因为我不知道这是什么意思,马上百度,了解到是这么个意思在传统的二进制数字概念中,1 byte(字节)= 8 bit(位)。大多数因特网标准使用八位组(octet)这个术语而不是使用字节来表示8位的量。该术语起始于TCP/IP发展的早期,当时许多早期的工作是在诸如DEC-10这样的系统上进行的,然而这些系统的结构...2013-07-19 09:55:48 · 305 阅读 · 0 评论 -
Byte和Bit之间的转换
// 返回无符号的2进制表示 1110011String hex = Integer.toBinaryString(115);System.out.println(hex);// 返回2进制的字符串1110011对应的值 115System.out.println(Integer.valueOf("1110011", 2));// 16进制值转换成二进制System...2013-07-19 18:39:04 · 3234 阅读 · 0 评论 -
UDP DUP超时UPD端口UDP到底有没有状态
我之前写过一个示例,一个简单的UDP服务端和客户端示例 http://cuisuqiang.iteye.com/blog/1543190,里面写过,如果你把自己当作客户端,那么客户端是可以指定自己的端口去发数的。另外,后面有评论询问关于请求超时的问题,是2012-10-18问的,然后一年后的今天,我回复他了。我回复的内容是ds.setSoTimeout(5000);即为收数超时时间,如果不设置...2013-10-18 10:24:55 · 370 阅读 · 0 评论 -
SNMP 在Windows上建一个SNMP服务 Win7下注意事项
在XP下搭建测试环境可以参考:http://cuisuqiang.iteye.com/blog/1609701 !Win7上类似的,但是仅仅按照以上操作步骤进行,默认还是无法读取到响应的值。 如果在Win7上遇到服务启动却无法使用时,请查看如下内容: 默认安全这个选项卡内是没有社区内容的。同时,在客户端,如果你不指定,默认发送时就是public!我们只要指定loca...2014-03-27 23:12:06 · 130 阅读 · 0 评论 -
一个Socket连接管理器
为了方便开发人员使用,我在闲暇之余写了一个简单的Socket连接管理的处理程序,程序简单仅供参考!其他更多精彩,请你访问我的博客:http://cuisuqiang.iteye.com/ 处理机说明:读取配置文件,根据配置文件信息保持一个连接配置变量集合。根据连接变量集合初始化相应的连接。启动一个线程,处理检查连接的有效性,处理方法是发送心跳包,如发现不能使用的连接,则设...2012-04-18 17:34:00 · 212 阅读 · 0 评论 -
通过Java HTTP连接将网络图片下载到本地
只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢!这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘了就无从下手!示例创建HttpURLConnection网络连接,并将这个连接获得的网络数据流写道本地磁盘! 示例代码如下:package imageView;import java.io.ByteArrayOutputStre...2012-11-15 13:10:00 · 326 阅读 · 0 评论 -
SNMP 使用SNMP4J V2进行TRAP
SNMP trap(SNMP 陷阱):某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询! 在网管系统中,被管理设备中的代理可以在任何时候向网络管理工作站报告错误情况,例如预制定阈值越界程度等等。代理并不需要等到管理工作站为获得这些错误情况而轮询他的时候才会报告。这些错误情况就是众所周知的SNMP自陷(trap)! 网管系统开放监听...2012-05-24 09:41:27 · 420 阅读 · 0 评论 -
SNMP 使用SNMP4J V2进行同步和异步 GET,SET
重要的类和接口Snmp类:该类是SNMP4J中最为核心的类。负责SNMP报文的接受和发送。PDU类和ScopedPDU类:该类是SNMP报文单元的抽象,其中PDU类适用于SNMPv1和SNMPv2c。ScopedPDU类继承于PDU类,适用于SNMPv3。Target接口和UserTarget类:对应于SNMP代理的地址信息,包括IP地址和端口号(161)。其中Target接口适用于SNMPv1...2012-05-24 10:16:40 · 445 阅读 · 0 评论 -
SNMP 使用SNMP4J OID设置不同类型的参数值
在SNMP4J中操作SNMP协议最重要的一点就是向PDU增加OID,我们可以一次性增加N个OID,如果是GET操作,那么增加一个OID的方式是这样的:pdu.add(new VariableBinding(new OID("1.3.6.1.4.1.9999.23.0.0.1.0"))); 我这里有一个需求,要使用一个约定好的OID作为参数,传递一些参数值过去,那么在进行GET操作时我...2012-05-24 13:45:55 · 777 阅读 · 0 评论 -
一个简单的UDP服务端和客户端示例
UDP的理论不再多说,我这里直接给出一个关于UDP的HelloWorld程序,代码明了,希望对刚入门的学生有所帮助!当然,实际上,在这块我也刚入门! 首先写服务端代码,服务端邦定本地的IP和端口来监听访问:package udp;import java.io.IOException;import java.net.DatagramPacket;import jav...2012-05-28 19:27:00 · 632 阅读 · 0 评论 -
UDP编程 UDP连接对象的理解和使用
之前写了一个 一个简单的UDP服务端和客户端示例 ,用于入门UDP,当我实际使用时发生了一点问题!上次使用中我也把连接对象 DatagramSocket 写成了静态的,在类的初始化时使用,可是系统中有很多地方使用,难道我要不断的创建这个类的对象吗? 可以这么做,当时有后果,后果就是内存溢出。UDP是没有状态的,DatagramSocket 创建一次即可,就是开始指向某个地址的端口...2012-06-07 10:16:32 · 143 阅读 · 0 评论 -
字节数组 与 十六进制间的转换
package com.test;import java.util.Arrays;public class Bytes { private final static byte[] hex = "0123456789ABCDEF".getBytes(); private static int parse(char c) { if (c >= 'a') retur...2012-10-18 16:18:17 · 71 阅读 · 0 评论 -
关于BCD编码 BCD与十进制转换
BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般...2012-02-28 14:42:44 · 4686 阅读 · 0 评论 -
Java NIO 时不能邦定指定IP和端口
在使用SNMP4J时,我想指定创建的客户端使用的本地IP和端口,因为在Socket时这是可以的,但是发现无法实现因为SNMP4J底层的通信是使用NIO实现的,而NIO编程时貌似就不能显示的指定例如在SNMP4J的DefaultTcpTransportMapping类里面,当作为客户端需要发送消息时,程序首先判断是否创建了这个客户端,如果没有在创建时看到这样的代码:SocketCha...2013-03-04 11:30:38 · 222 阅读 · 0 评论 -
如何判断Socket连接失效
现在都搞升级,本人也也使用JDK6进行开发。在开发工程中对Socket进行管理时对于这个连接的超时和是否失效进行研究。结果网上的资料很是让人失望,可以说google和百度下来,前几页原创很少都是抄袭。说正经的,对于连接超时和失效肯定会想到设置超时时间和判断连接是否可用。但是设置超时时间后起作用是在调用read方法的时候,如果只是设置了超时时间却没有调用read,那么就算服务端中断连接,客户端...2012-03-14 17:24:29 · 590 阅读 · 0 评论 -
SNMP 在Windows上建一个SNMP服务并获得该机器的机器名
今天这个示例很简单,主要是为了让大家很快的建立一套能够走通的测试环境!大家知道,要接触一个新的东西总要写一些HelloWorld的东西,或者把内容走同,不然自己会非常的纠结! 为了简单起见,现在在Windows上建立一个SNMP服务环境,XP系统也自带了该服务的支持!控制面板中打开添加或删除程序! 然后点击对钩安装如上选项,安装两个服务: ...2012-07-27 16:26:20 · 663 阅读 · 0 评论 -
CRC 校验
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 import java.util.Arrays;/** * @说明 CRC校验类 * @author cuisuqiang * @version 1.0 * @since */public cla...原创 2012-11-05 14:19:44 · 233 阅读 · 0 评论 -
Socket 关于设置Socket连接超时时间
做网络编程的人对setSoTimeout方法一定很熟悉,都知道是设置连接的超时时间!但是我在网上找资料时发现很多人把这个超时时间理解成了链路的超时时间!我看了一下JDK 关于这个方法的说明,其实根本不是链路的超时时间! setSoTimeoutpublic void setSoTimeout(int timeout) throws SocketException启用/禁用带有...2012-11-14 11:23:46 · 4409 阅读 · 0 评论 -
ServerSocket 默认邦定IP
开发中需要开启服务端的时候,本地测试都是直接写端口,实际环境也是需要指定要邦定的IP才可以。因为对于服务器来说,有时它不止一块网卡,而我们系统一定是通过指定的IP和端口进行通信的,所以服务端所使用的IP和端口都需要定义配置文件。 那么在平常测试时,在没有指定IP的情况下,ServerSocket到底邦定到哪里了?在这种情况下,服务器会把此端口绑定到0.0.0.0上面,即在所有I...2014-03-27 23:38:17 · 554 阅读 · 0 评论