
socket
文章平均质量分 67
SAN_YUN
这个作者很懒,什么都没留下…
展开
-
socket InputStream读取数据的问题记录
在用java写socket client的发现一个问题,如果直接运行程序会报无法序列化的错误,但如果debug则不会报错,应该大半天的研究才发现问题在于java中从socket读取inputStream时,未必能一次性全部读取到,这可能应为网络延迟,也可能应为缓冲区还没有准备好,之前代码是这样: public String readLine(int length) throws IOE...原创 2013-03-13 17:42:49 · 998 阅读 · 0 评论 -
TCP 滑动窗口协议
TCP滑动窗口机制我们可以大概看一下上图的模型:首先是AB之间三次握手建立TCP连接。在报文的交互过程中,A将自己的缓冲区大小(窗口大小)3发送给B,B同理,这样双方就知道了对端的窗口大小。A开始发送数据,A连续发送3个单位的数据,因为他知道B的缓冲区大小。在这一波数据发送完后,A就不能再发了,需等待B的确认。A发送过来的数据逐渐将缓冲区填满。这时候缓冲区中的一个报...原创 2013-11-07 18:36:14 · 434 阅读 · 0 评论 -
深入理解JDBC的超时(timeout)设置
真实案例:应用服务器在遭到DDos攻击后无法响应 在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变得无法连接,从而导致业务系统也无法正常运转。安全组很快屏蔽了所有的DDos攻击,并恢复了网络,但业务系统却还是无法工作。 通过分析系统的thread dump发现,业务系统停在了JDBC API的调用上。20分钟后,系统仍处于WAITING状态,无法响应。30分钟后,系统...原创 2013-06-26 15:27:40 · 14108 阅读 · 1 评论 -
PushbackInputStream的一个小bug
在前面java socket那篇文章中我提到netty使用PushbackInputStream来解决IO阻塞的问题。今天遇到一个错误使用PushbackInputStream导致的小BUG,花费了一点时间,所以记录一下。我的代码:[code="java"] public void run() { Socket socket = this.socke...原创 2012-10-05 11:26:38 · 401 阅读 · 1 评论 -
再谈应用环境下的TIME_WAIT和CLOSE_WAIT
原文:http://shootyou.iteye.com/blog/1129507 昨天解决了一个HttpClient调用错误导致的服务器异常,具体过程如下:http://blog.youkuaiyun.com/shootyou/article/details/6615051里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态。 在...原创 2012-10-11 15:38:24 · 126 阅读 · 0 评论 -
Java程序员也应该知道的一些网络知识
对于需要编写网络通信的Java程序员而言,OS/网卡/网络结构等也需要有一些了解,以确保程序运行符合期望。Java层面本身可通过Socket API来控制一些系统层面的参数(其他的诸如Netty/Mina/Grizzly这些通信框架也都提供设置这些参数的方法),主要是下面几个: 1. setTcpNoDelay(boolean on) 在不设置的情况下,默认为false,即禁用Nagle’...原创 2013-07-18 22:11:40 · 266 阅读 · 0 评论 -
NFS-RPC框架优化过程(从37k到168k)
NFS-RPC框架从编写之初,到现在为止(应该还会有些提升,不过估计不大),每秒支撑的请求数上升了好几倍,测试结果的演变为: 37k –> 56k –> 65k –> 88k –> 93k –> 143k –> 148k –> 153k –> 160k –> 163k –> 168k 以上测试结果为在100并发、100 request ...原创 2013-07-18 22:17:46 · 583 阅读 · 0 评论 -
网络编程中Nagle算法和Delayed ACK的测试
网络编程中Nagle算法和Delayed ACK的测试原创 2013-07-28 22:44:16 · 139 阅读 · 0 评论 -
TCP滑动窗口
目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。这些协议又可以根据数据吞吐量来大致分成两大 类:(1)交互数据类型,例如telet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等。(2)数 据成块类型,例如ftp,这种类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提高效率。针对这两...原创 2014-06-04 16:10:45 · 116 阅读 · 0 评论 -
java socket参数详解:TcpNoDelay
TcpNoDelay=false,为启用nagle算法,也是默认值。 Nagle算法的立意是良好的,避免网络中充塞小封包,提高网络的利用率。但是当Nagle算法遇到delayed ACK悲剧就发生了。Delayed ACK的本意也是为了提高TCP性能,跟应答数据捎带上ACK,同时避免糊涂窗口综合症,也可以一个ack确认多个段来节省开销。悲剧发生在这种情况,假设一端发送数据并等待另一端应答,协议上分...原创 2012-12-14 19:28:23 · 744 阅读 · 0 评论 -
libevent源码分析
原文参考: http://blog.youkuaiyun.com/sparkliang/article/category/660506原创 2012-11-12 20:52:32 · 127 阅读 · 0 评论 -
java socket 参数说明
Socket 的 I/O 调用可能会因为多种原因而阻塞。数据输入方法 read()和 receive()在没有数据可读时会阻塞。TCP 套接字的 write()方法在没有足够的空间缓存传输的数据时可能阻塞。 ServerSocket 的 accept()方法和 Socket 的构造函数都会阻塞等待,直到连接建立(见第6.4 节)。同时,长的信息往返时间,高错误率的连接和慢速的(或已发生故障...原创 2012-11-10 16:19:36 · 222 阅读 · 0 评论 -
socket参数对性能的影响
今天发现线上一台机器的cilent端很慢,通过打点记录相关耗时:写道server:13-03-26 14:30:12 [INFO] com.duitang.biz.blog.impl.MysqlBlogQueryServiceImpl - queryBlogDetail cost40 ms13-03-26 14:30:12 [INFO] com.duitang.dboss.remote...原创 2013-03-26 14:51:06 · 352 阅读 · 0 评论 -
socket InputStream available()lock的问题
在socket InputStream读取数据的问题记录一文中介绍通过input.available()检测是否有可读的字节,上线之后发现服务器load过高,通过jstack发现大量线程都lock在在SocketInputStream.available()上,见截图: 之前以为input.available()会很耗时,通过打点发现原来是调用input.available()过于频繁...原创 2013-03-28 18:45:05 · 531 阅读 · 0 评论 -
Java网络编程--Socket编程
原文:http://blog.sina.com.cn/s/blog_616e189f0100s3px.html Socket缓冲区探讨 本文主要探讨java网络套接字传输模型,并对如何将NIO应用于服务端,提高服务端的运行能力和降低服务负载。 1.1 socket套接字缓冲区 Ja...原创 2012-11-03 23:07:03 · 183 阅读 · 0 评论 -
Java Socket codec
要写好java的网络编程并不只是new几个Socket,get一下InputStream,write to OutStream这么简单的。如何定义高效,稳定的协议,如何处理TCP协议中字节的发送和接收,编码,解码问题?socket缓冲区又是什么?本文讲讨论这些问题。 codec TCP/IP 协议以字节的方式传输用户数据,并没有对其进行检查和修改。这个特点使应用程序可以非常...原创 2012-11-06 20:08:11 · 134 阅读 · 0 评论 -
Frame实现
这里讨论Frame的实现问题。原创 2012-11-06 21:01:24 · 122 阅读 · 0 评论 -
python struct
在使用python向java发送数据的时候一般是需要记录数据长度的,数据长度应该是int类型:s = socket.socket()s.connect((host, port))data = 'hello world's.sendall('%16s' % len(data)) #send data lengths.sendall(data) #send datas.clos...原创 2012-11-07 14:03:55 · 129 阅读 · 0 评论 -
Socket send函数和recv函数详解
int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参数指明...原创 2012-11-09 12:17:38 · 174 阅读 · 0 评论 -
一个自定义协议的例子
public class VoteMsg { private boolean isInquiry; // true if inquiry; false if vote private boolean isResponse;// true if response from server private int candidateID; // in [0,1000] ...原创 2012-11-10 14:54:21 · 270 阅读 · 0 评论 -
关于JAVA取本机ip的一些总结
通常绑定本机ip地址 一般如下 InetSocketAddress address = new InetSocketAddress(port); Channel serverChannel = bootstrap.bind(address); InetSocketAddress默认使用的是什么ip呢?看看内部代码就明白了:public...原创 2013-09-13 14:29:24 · 329 阅读 · 0 评论