随笔 -- IO -- Socket/ServerSocket -- Echo(BIO)实例 Java 网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节.你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节. java.net 包中提供了两种常见的网络协议的支持: TCP:TCP 是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信.通常用于互联网协议,被…
随笔 -- IO -- Socket/ServerSocket -- 系统概述 Java中提供的专门的网络开发程序包------java.net Java的网络编程提供的两种通信协议:TCP和UDP 19.1 IP与InetAddress 19.1.1 IP地址简介 19.1.2 InetAddress InetAddress类主要表示IP地址,这个类有两个子类:Inet4Address.Inet6Address. InetAddress类的常用方法: ⊙ public static InetA…
业务需求说明,由于公司数据中心处于刚开始部署的阶段,这需要涉及其它部分将数据全部汇总到数据中心,这实现的方式是同上传json文件,通过采用socket&serversocket实现传输. 其中,服务端采用多线程的方式,实现多用户传输的目的.并且实现可以将数据写入到hbase中. 具体步骤如下: 1.首先编写客户端的代码: package com.yiban.datacenter.ToHbaseFromJson; import java.io.BufferedReader; import java…
网络编程之Socket & ServerSocket Socket:网络套接字,网络插座,建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口:socket用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信. 1.客户端Socket类 此类实现客户端套接字 构造方法 构造方法 作用 Socket(String host, i…
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import org.junit.Test; public class TestTCP { @Test public void r…
这篇就先暂停下上篇博客--你画我猜的进度,因为在做这个游戏的时候,想采用最新的ng2技术,奈何坑是一片又一片,这边就先介绍下环境部署和填坑史 既然要用ng2,首先要拿到资源,我这边用的是angularJs2 beta版的,网上的资源有两种,一个是文件全压缩版的.min.js版的另一个就是一大堆乱七八糟的js文件,主要是ng2已经完全采用TypeScript,加之对es6的支持,所以需要引入一大堆兼容,编译文件 这边刚好特别手欠想学学gulp,于是开搞配置gulp环境,压缩所有的js文件成一个mi…
sendEmail发送邮件是出现以下报错: *******************************************************************  Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client  is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER  together with SSL_ca_file|SSL…
http://www.thegeekstuff.com/2010/07/perl-tcp-udp-socket-programming/ In this article, let us discuss how to write Perl socket programming using the inbuilt socket modules in Perl. Perl socket modules provides an object interface that makes it easier…
在网络编程中,Socket/ServerSocket有一些选项用来自定义一些行为,现在分享一下.     Socket选项 1.TCP_NODELAY 在Socket发送数据时,默认情况下,数据会先进入缓冲区,等缓冲区满了再发送出去,意图是为了通过减少传输数据的次数,以此来提高通信效率. 但是,对于一些需要即时发送,即时响应的场景并不合适,比如网络游戏.客户端因为采用的默认行为,会等到缓冲区满了后才发送数据,服务端的响应相应也会变慢,导致整个游戏运行起来不流畅. 这时,就要开启TCP_NODEL…
系统环境CentOS Linux release 7.2.1511 (Core) sendEmail发送邮件是出现以下报错:******************************************************************* Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client is deprecated! Please set SSL_verify_mode to SSL_VERI…
一.ServerSocketChannel Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样.ServerSocketChannel类在 java.nio.channels包中. 打开 ServerSocketChannel 通过调用 ServerSocketChannel.open() 方法来打开ServerSocketChannel. 关闭 ServerSocketChannel 通过调用Se…
在上面一节中,服务端收到客户端的连接之后,都是new一个新的线程来处理客户端发送的请求,每次new 一个线程比较耗费系统资源,如果100万个客户端,我们就要创建100万个线程,相当的 耗费系统的资源,服务器是没有办法支持这样多的客户端进行连接的 我们可以采用线程池的方式来实现:提高 package bhz.bio2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReade…
package bhz.bio; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { final static int PROT = 8765; public static void main(String[] args) { ServerSocket server = null; try { server = new ServerSocke…
一般地,Socket可分为TCP套接字和UDP套接字,再进一步,还可以被分为服务器端套接字跟客户端套接字.这节我们先关注TCP套接字的服务器端socket,Java中ServerSocket类与之相对应,这个类主要用于如何在服务器端创建一个套接字服务,建立一个通信终端,被动地等待客户端的连接,一旦有数据进入被监听的端口,这个类将能接收这些数据. ServerSocket类位于java.net包中,它有很多方法,包括创建socket实例.绑定端口,阻塞接收连接等.一般服务器按以下几步进行工作: ①…
Socket 和ServerSocke 是一对 他们是java.net下面实现socket通信的类SocketChannel 和ServerSocketChannel是一对 他们是java.nio下面实现通信的类 支持异步通信 服务器必须先建立ServerSocket或者ServerSocketChannel 来等待客户端的连接客户端必须建立相对应的Socket或者SocketChannel来与服务器建立连接服务器接受到客户端的连接受,再生成一个Socket或者SocketChannel与此客户…
简介 Java  NIO从JDK1.4引入,它提供了与标准IO完全不同的工作方式. NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题.    1. Buffer:它是包含数据且用于读写的线形表结构.其中还提供了一个特殊类用于内存映射文件的I/O操作.    2. Charset:它提供Unicode字符串影射到字节序列以及逆影射的操作.    3. Channels:包含socket,file和pipe三种管道,它实际上是双向交流的通道.   …
记住NIO在jdk1.7版本之前是同步非阻塞的,以前的inputsream是同步阻塞的,上面学习完成了Buffer现在我们来学习channel channel书双向的,以前阻塞的io的inputstream都是单向的 channel有四种连接状态 connect accept  read  write ,nio的核心基础就是selector package bhz.nio; import java.io.IOException; import java.net.InetSocketAddress…
结论: > Socket 理论上 支持 只上行,或者 只下行. > 心跳包 必须是 上下行的 —— 心跳包请求(上行) - 心跳包响应(下行). > 如果 长时间 只有单向链接(只发送不接受,或者 只接受不发送) —— 路由器 就会 丢弃 Socket数据. > 心跳包 不是 必须的 —— 任意 上下行组合 都能 维持 Socket 所需的 软件(操作系统.程序).硬件(电脑.路由器,手机基站)的 有效性. 相关链接: http://www.cnblogs.com/lcw/p/35…
本文纯属记录第一次实战遇到的坑和知识,如果后边有时间再做整理. 1,先写了个操作数据库的工具类SqlTool,照着JDBC资料打完之后,测试的时候出错了,java.lang.ClassNotFoundException: com.mysql.jdbc.Driver. 百度了一下,需要导入jar包,右键项目-->构建路径-->添加外部归档(jar).要导入的jar包就在%mysql%\Connector.J 5.1\mysql-connector-java-5.1.39-bin.jar 2,再次…
在NIO同步非阻塞的场景中和原来同步阻塞最大的却别就是引入了上面的Buffer对象,现在我们来学校上面的BUffer对象 我们来看看程序的代码: package bhz.nio.test; import java.nio.IntBuffer; public class TestBuffer { public static void main(String[] args) { // 1 基本操作 //创建指定长度的缓冲区 IntBuffer buf = IntBuffer.allocate(10)…
package com.nio.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; im…
Socket-IO 系列(三)基于 NIO 的同步非阻塞式编程 缓冲区(Buffer) 用于存储数据 通道(Channel) 用于传输数据 多路复用器(Selector) 用于轮询 Channel 状态,四种状态:Connect(连接),Accept(阻塞),Read(读),Write(写) 一.Buffer(缓冲区) 不同于面向流的 IO 中将数据直接写入或读取到 Stream 对象中,在 NIO 中,所有数据都是用缓冲区处理(读写).缓冲区通常是一个字节数组(ByteBuffer),这个数组…
package com.slp.nio; import org.junit.Test; import java.io.*; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.CharacterCodingException; import jav…
1. NIO 简介 Java NIO(New IO)是从1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API; NIO 与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的,基于通道的IO操作; Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer);简单说,通道负责传输,缓冲区负责存储; NIO 将以更加高效的方式进行文件的读写操作; 1.1 IO和NIO的主要区别 IO 面向流 阻塞IO NIO 面向缓冲区 非阻塞I…
通道(Channel) 由java.nio.channels包定义的,Channel表示IO源与目标打开的连接,Channel类似于传统的“流”,只不过Channel本身不能直接访问数据,Channel只能与Buffer进行交互.通道主要用于传输数据,从缓冲区的一侧传到另一侧的实体(如文件.套接字...),反之亦然:通道是访问IO服务的导管,通过通道,我们可以以最小的开销来访问操作系统的I/O服务:顺便说下,缓冲区是通道内部发送数据和接收数据的端点. 在标准的IO当中,都是基于字节流/字符流进行…
NIO操作文件部分详解 NIO——New IO,也可以理解为非阻塞IO(Non Blocking IO).可以替代旧IO,更高效的支持读写(文件读写,网络读写).但文件操作都是阻塞的.学习NIO首先要了解缓冲区(Buffer),通道(Channel). 一.缓冲区(七种类型)——专门用于存取各种基本类型数据(除Boolean)的地方.(如果已经了解,请点击这里) 1.缓冲区的类型有ByteBuffer,ShortBuffer,IntBuffer,LongBuffer,DoubleBuffer,F…
一.问题背景 目前公司在互联网产品上需要程序与前端部分要进行一个实时交互,在进行一定程度上的选型后,决定使用socket.io框架进行一个实践,算是公司的一个新的 尝试,也算是给自己增加增长见闻,由于我是做后端以及桌面程序开发,所以前端部分就不细聊,主要是针对桌面程序如何连接socket.io进行一个尝试 二.基本逻辑图 本地应用程序:部署在局域网内(可以联通外网),主要负责相关数据获取 Web浏览器端:跟本地应用程序不是处于同一个网络,请求发起方 中转服务(重点):中转服务集成认证功能,必须经…
参考资料: http://haohaoxuexi.iteye.com/blog/1979837http://zhidao.baidu.com/link?url=OeOSa0YbOzSbMVPa8sgPXcwtyyHsWB1lPkh1XopETtNK_lVtbd9lL7NH3qlFxjC-4kNUmCkIXgcfRW7KJq9_FKhttp://www.cnblogs.com/rond/p/3565113.htmlhttp://www.cnblogs.com/mengdd/archive/2013…
关于socket.getOutputStream() 的一些问题, OutputStream的flush是一个空方法,所以需要另一个实现了Flush的流来包装一下 这里为什么使用PrintWriter,而不使用BufferedWriter 原因是在接收方使用BufferedReader 的readLine,而BufferedWriter.write并不会自动换行,所以会导致读取阻塞,需要手动换行,代码如下: BufferedWriter bw = new BufferedWriter(new O…
前言 用ServerSocket和Socket做了个Server.Client通信的demo,以及学习下在这个demo过程中用到java.net.java.io包下几个常用的类. Server import java.net.*; import java.io.*; public class HttpServer{ public static void main(String[] args){ new HttpServer().start(); } private ServerSocket se…