java 基础之--nio 网络编程】的更多相关文章

在传统的Java 网络编程中,对于客户端的每次连接,对于服务器来说,都要创建一个新的线程与客户端进行通讯,这种频繁的线程的创建,对于服务器来说,是一种巨大的损耗,在Java 1.4 引入Java nio 引入了 selector channel buffer 对此操作进行重新的定义: 服务端: package com.java.baseknowledge.net; import java.io.IOException; import java.net.InetAddress; import ja…
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web资源,URLDecode和URLEncode用来转换字符串. 本文会写两个例子来演示java网络编程的一些基本用法. 第一个例子,用java实现http get 和 post请求 本例涉及如下知识点, HTT协议规范 使用URL对象建立HTTP协议的网络连接URLConnection对象conn,本…
Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. ServerSocket,此类实现服务器套接字.服务器套接字等待通过网络传入的请求然后基于该请求执行某些操作,可能向请求者返回结果. Socket方法 getInetAddress(); //远程服务端的IP地址 getPort(); //远程服务端的端口 getLocalAddress() /…
一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程.…
1.协议的概念:通信双方事先约定好的通信规则 2七层网络通信协议:应用成,表示层,会话层,传输层,网络层,数据链路层 3.TCP/IP协议:点对点通信,三层握手,安全有保证 4.UDP协议;广播协议,不保证数据安全但很高效 5.重要APl:InetAddress类,URl类,ServerSocked类,DatagramSocket类 6.网络编程主要有两部分:一是获取管理socket连接,二是获取使用输入输出流传输数据 1.网络模型介绍 OSI参考模型                   TCP…
<Unix网络编程:卷1>中介绍了5中I/O模型,JAVA作为运行在宿主机上的程序,底层也遵循这5中I/O模型规则.这5中I/O模型分别是: 阻塞式IO 非阻塞式IO I/O复用 信号驱动式IO 异步IO 按POSIX标准来分,IO分为同步和异步,上面的前4钟都属于同步IO,具体后面解释. 在介绍IO模型之前,需要先了解应用程序IO的过程,一般来说,一个IO分为两个阶段 应用程序向操作系统发出IO请求:应用程序发出IO请求给操作系统内核,操作系统内核需要等待数据就绪,这里的数据可能来自别的应用…
网络编程 InetAddress tcp udp…
网络编程 InetAddress tcp udp…
阻塞IO与非阻塞IO 通常情况下的Socket都是阻塞式的, 程序的输入输出都会让当前线程进入阻塞状态, 因此服务器需要为每一个客户端都创建一个线程. 从JAVA1.4开始引入了NIO API, NIO可以实现非阻塞IO, 这样就可以使用一个线程处理所有的客户请求. 基于NIO的非阻塞Socket通信 服务器将用来监听客户端请求的channel注册到selector上,启动一个线程,使用selector的select()获取求情的客户端的channel数量, 当监听到有客户端请求时,就通过Sel…
UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramSocket类的receive和send方法即可,但消息需要通过一个特定的类封装(DatagramPacket) 下面是一个基于UDP协议的通信的例子, 服务器端, package udp; import java.io.IOException; import java.net.DatagramPac…
异步IO 下面摘子李刚的<疯狂JAVA讲义> 按照POSIX标准来划分IO,分为同步IO和异步IO.对于IO操作分为两步,1)程序发出IO请求. 2)完成实际的IO操作. 阻塞IO和非阻塞IO都是针对第一步来划分的,如果发出IO请求会阻塞线程,就是阻塞IO,否则就是非阻塞IO. 同步IO和非同步IO是针对第二步来说的,如果实际IO操作是由操作系统完成,再返回给程序,就是异步IO. 如果实际的IO需要程序本身去执行,会阻塞线程,就是同步IO. JAVA7的NIO.2提供了异步的channel,…
在前面的HTTP网络通信的例子中,使用了URLConnection conn = url.openConnection();连接网络, 如果改用URLConnection conn = url.openConnection(proxy);方式,传入一个proxy对象,设置好代理IP和端口,则可以实现代理连接, 下面是一个简单例子, package proxy; import java.io.IOException; import java.io.PrintStream; import java.…
IP多点广播原理 设置一组特殊网络地址作为多点广播地址,每一个多点广播地址都被看作一个组,当客户需要发送和接受信息时,加入到该组即可. IP协议为多点广播提供了一批特殊的IP地址,范围是224.0.0.0 ~ 239.255.255.255 JAVA中使用MutilcastSocket加入一个广播组(joinGroup),从而在组内发送和接受数据报DatagramPacket. MutilcastSocket比起普通的UDP通信的DatagramSocket多了setTimeToLive(int…
Java NIO之多个Selector的实现Java NIO类库Selector机制解析(上) Java NIO类库Selector机制解析(下) https://www.zhihu.com/question/19732473 http://blog.csdn.net/iter_zc/article/details/39291647 http://www.cnblogs.com/Anker/p/3254269.html http://blog.csdn.net/historyasamirror/…
下面将基于TCP协议用JAVA写一个非常简单的聊天室程序, 聊天室具有以下功能, 在服务器端,可以接受客户端注册(用户名),可以显示注册成功的账户 在客户端,可以注册一个账号,并用这个账号发送信息 发送信息有两种模式,一种是群聊,所有在线用户都可以看到消息,另一种是私聊,只针对指定账户发送消息 下面是主要的实现思路, 首先是服务器端, 需要使用多线程实现. 主线程用来循环监听客户端的连接请求, 一旦接收到一个请求,就为这个客户端创建一个专用通信线程. 服务器端依靠一个经过重写的map保存在线的客…
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 TCP/IP协议 TCP/IP是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP.TCP称为传输控制协议,IP称为互联网络协议. 网络分层除了OSI模型分层,还有TCP/IP模型分层,将网络划分为四层,应用层.传输层.网际层…
说到java网络通讯章节的内容,刚入门的学员可能会感到比较头疼,应为Socket通信中一定会伴随有IO流的操作,当然对IO流比较熟练的哥们会觉得这是比较好玩的一章,因为一切都在他们的掌握之中,这样操作起来就显得非常得心应手,但是对于IO本来就不是多熟悉的哥们来说就有一定的困难了,在搞清楚IO流操作机制的同时还必须会应用到Socket通信中去,否则会对得到的结果感到非常郁闷和懊恼,下面就和大家一起分享一下自己遇到一点小麻烦后的感触以及给出的解决办法. 要求:客户端通过Socket通信技术上传本地一…
什么是socket ? socket 是连接运行在网络上的两个程序间的双向通讯端点 服务器将某一套接字绑定到一个特定的端口,并通过这一套接字等待和监听客户端的的连接请求 客户端通过这个端口与服务器进行连接 如果一切正常,服务器接受到了连接的请求,并获得一个新的绑定到不同端口的套接字 服务端与客户通过读写套接字进行通讯 下面的基于Java 传统的tcp/ip 的代码编写,实现了服务器与客户端的通信 服务端代码: package com.java.baseknowledge.net; import…
使用 DatagramSocket 创建一个 UDP协议的Socket, 用DatagramPacket创建一个数据包,可以指定ip和端口号以及包的数据,用socket.send()可以发送这个数据包,代码实例: String str = "这是数据"; DatagramSocket socket = new DatagramSocket(); DatagramPacket packet = );// 指定接收端口 socket.send(packet); socket.close()…
目录 前言 1. Java 网络编程 1.1 Javs NIO 基本介绍 1.2 缓冲区 Buffer 1.2 通道 Channel 1.3 选择器 Selector 1.4 NIO 非阻塞网络编程原理分析 2. 线程模型概述 2.1 传统阻塞 IO 服务模型 2.2 Reactor 模式 2.3 单 Reactor 单线程模式 2.4 单 Reactor 多线程模式 2.5 主从 Reactor 多线程模式 2.6 Netty 模型 最后 前言 参考资料: <Netty In Action>…
20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表达式求值的功能 中缀转后缀的算法可描述为: 设置一个运算符栈,设置一个后缀表达式字符串: 从左到右依次对中缀表达式中的每个字符ch分别进行以下处理,直至表达式结束: 若ch是左括号'(',将其入栈: 若ch是数字,将其后连续若干数字添加到后缀表达式字符串之后,并添加空格作为分隔符: 若ch是运算符,先将栈顶若…
Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private : 在同一类内可见.使用对象:变量.方法. 注意:不能修饰类(外部类) public : 对所有类可见.使用对象:类.接口.变量.方法 protected : 对同一包内的类和所有子类可见…
黑马程序员:Java基础总结 GUI&网络&IO综合开发   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络架构 C/S:Client/Server 客户端,服务端. 特点: 1,需要在客户端和服务端都需要按照编写的软件. 2,维护较麻烦. 好处:可以减轻服务端的压力,如网络游戏. B/S:Browser/Server 浏览器 ,服务端. 1,客户端不用单独编写软件.      因为客户端用的就是浏览器. 2,对于软件升级,只要考虑服务端即可. 弊端:所…
Java基础教程:面向对象编程 内容大纲 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台无关性.Java为解释型语言,编译器会把Java代码变成“”“中间代码”,然后在JVM上解释执行. 3.Java提供了很多内置的类库,这些类库简化了开发人员的程序设计工作,同时缩短了项目开发时间. 4.Java语言提供了对Web应用的支持. 5.Java语言提供了较好的安全性和健壮性. 为了增强程序…
Java基础教程:JDBC编程 1.什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法. 制作到数据库的连接. 创建 SQL 或 MySQL 语句. 执行 SQL 或 MySQL 查询数据库. 查看和修改所产生的记录. 从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 Java…
Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看JavaAPI文档来获取其功能声明: 基本语法: import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System…
转自http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=27043 [基础知识][网络编程]TCP/IP iooops  胖友们楼主我又来发帖了……(最近无时不刻感受到身上穷得叮当响而且还感觉什么都不会当然这是不相干的内容哎) 今天晚上楼主刚学了一下TCP/IP协议.特来分享. TCP/IP一般有4 Layers. 1. Application Layer 包括有HTTP(Hypertext Transfer Protocol), FTP(…
本章主要介绍Socket的基本概念,传统的同步阻塞式I/O编程,伪异步IO实现,学习NIO的同步非阻塞编程和NIO2.0(AIO)异步非阻塞编程. 目前为止,Java共支持3种网络编程模型:BIO.NIO.AIO: Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善. Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的…
使用Java NIO进行网络编程,看下服务端的例子 import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.Serve…
概述 在 Netty学习(3)中,我们已经学习了 Buffer 和 Channel 的概念, 接下来就让我们通过实现一个 NIO 的多人聊天服务器来深入理解 NIO 的第 3个组件:Selector. 目的 在本文中,我们将通过实现一个网络聊天室程序,来掌握 Selector 的概念以及如何使用 NIO 来完成网络编程. 需求 服务器端 可以检测用户上线.离线,并告知其他用户: 将一个客户端的消息转发给其他在线客户端. 客户端: 可以发送消息给其他所有在线用户: 通过转发,接受到其他用户的消息.…