本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
- kingwell.leng
最新文章列表
Java Socket学习---nio实现阻塞多线程通信
本次使用nio实现socket客户端和服务端的通信,并且在服务端为每一个新建的连接创建一个线程负责维持和客户端的通信。
使用nio实现的阻塞的socket与普通方式实现的通信相比较仅仅是实现方式不同,其实质的运行原理是一样的。在此仅仅作为一个nio的入门示例。
nio来做socket主要用到两个类ServerSocketChannel(服务器socket)和SocketChannel(客户端s ...
使用java NIO实现复制文件
前几天自己在做一个小实验来着,突然想到自己以前通过TCP(socket)的方式做过复制文件的事情,然后就想到貌似没试过UDP(DatagramSocket)的方式实现复制文件(其实这从头就是个错误的思路)。遂马上动手试验,理所当然的写到后面就发现这样的方式有缺陷(UDP本身特性决定了),但是在思索有不有其他的变通的方式实现的时候,无意中看到了NIO这个以前一直没注意的东西,当时还想通过NIO找一些变 ...
netty4源码分析-connect
本文为原创,转载请注明出处
netty4源码分析-connect
客户端向服务端发起connect请求由以下代码触发:
ChannelFuture f = b.connect(host, port).sync();
调用Bootstrap的connect方法:
//Bootstrap
public ChannelFuture connect(String inetHos ...
使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket
在使用传统的ServerSocket和Socket的时候很多时候程序是会阻塞的
比如 serversocket.accept() , socket.getInputStream().read() 的时候都会阻塞 accept()方法除非等到客户端socket的连接或者被异常中断 否则会一直等待下去
read()方法也是如此 除非在输入流中有了足够的数据否则该方法也会一直等待下去知道数据的到来.在 ...
SocketChannel 例子
这几天在看mina
mina 基于socketChannel 和 DatagramChannel 建立的无阻塞链接。
所以就看了看socket channel 的使用方式,做一份备忘吧。
socketChannel 的使用方式
server端
package com.jimmy.nio;
import java.io.IOException;
import java.net.InetSo ...
使用SocketChannel的NIO客户机服务器通信示例。(转)
这只是长征路上的一小步,以后还有待改进。NIO Selector示意图:客户端代码:
import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.S ...
转:使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket
在使用传统的ServerSocket和Socket的时候 很多时候程序是会阻塞的
比如 serversocket.accept() , socket.getInputStream().read() 的时候都会阻塞 accept()方法除非等到客户端socket的连接或者被异常中断 否则会一直等待下去
read()方法也是如此 除非在输入流中有了足够的数据 否则该方法也会一直等待下去知道数据的到来 ...
(三) 可中断套接字
当连接到一个套接字时,当前线程将会被阻塞知道建立连接或产生超时位置。同样地,当通过套接字读写数据时,当前线程也会被阻塞知道操作成功或产生超时为止。
在交互式的应用中,也许会考虑为用户提供一个功能,用以取消那些不会成功的连接。但是当线程因套接字长时间无法响应而发生阻塞时,无法通过调用interrupt来接触阻塞。
为了中断套接字操作,可以使用java.nio包提供的一个特性 SocketChann ...
NIO的陷阱(一)
SocketChannel.open(new InetSocketAddress(hostIp, hostListenningPort))与SocketChannel.open(),socketChannel.connect(new InetSocketAddress(hostIp, hostListenningPort))的比较
相同点:这两种写法实现的功能一样,都是打开通道并连上服务端 ...
ServerSocketChannel
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mailclass;
import java.io.IOException;
import java.net.InetSocketAddress;
import j ...