Java—网络编程基础】的更多相关文章

今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整理了一下重要的基础知识点,供大家参考. 正在读这篇随笔的你是否遇到过如下问题? 什么是BIO?什么是NIO?什么是AIO?什么是同步IO?什么是异步IO?什么是阻塞IO?什么是非阻塞IO? 为什么我感觉异步IO和非阻塞IO是一样的? 读完这篇随笔后相信大家就会明白了. 废话不多时,直接上干货. 一.…
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为我们拥有网络.网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界. 然而,网络的无标度和小世界特性使得它又是复杂的,无所不在,无所不能,以致于我们无法区分甚至无法描述. 对于一个码农而言,了解网络的基础知识可能还是从了解定义开始,认识OSI的七层协议模型,深入Socket内部,进而熟练地…
java网络编程 网络编程基础 1.常用的网络拓扑结构: 星型网络.总线网络.环线网络.树形网络.星型环线网络 2.通信协议的组成 通信协议通常由3部分组成: 语义部分:用于决定通信双方对话类型 语法部分:用于决定通信双方对话格式 变换规则:用于决定通信双方的应答关系 3.OSI模型和TCP/IP模型 OSI:开放系统互联参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 TCP/IP:传输控制协议 应用层 传输层 网络层 物理数据链路层 4.IP地址和端口号 IP地址用于唯一的标识网…
什么是网络编程 网络编程是通过使用套接字来达到进程间通信目的,那什么是套接字呢?其实套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程,具体来看,套接字=IP地址+TCP/UDP + 端口的组合. 网络编程的三要素 网络编程中,通信“双方”要如何找到彼此呢?互联网是通过IP地址来区分上网电脑的,但是通信的“双方”都是物理电脑上跑的进程,在一台电脑上通过端口来区分不同进程和程序,最后…
网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机.而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为…
前言 通过网络进行数据传输时,一般使用TCP/UDP进行数据传输.但是两个的区别就是TCP可靠,UDP不可靠.两个的共同之处就是都需要建立socket套接字,将IP地址和端口port进行绑定.但是服务器和客户端的socket是有点区别的,服务器端需要显示的指定端口号,以便进行数据监听:而客户端只需要指定IP就行,端口号则由操作系统来分配. 基础类 (1) InetAddress类 该类就是表示互联网中的IP地址,常用的方法有: getByName(String host) 静态方法,给定主机名来…
基于TCP协议的网络编程 TCP/IP协议是一种可靠的网络协议,它的通信的两端各自建立一个Socket,从而在通信的两端之间形成网络虚拟链路. Java使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信. 1.ServerSocket java中能接收其他通信实体连接请求的类是ServerSocket,他会监听来自客户端Socket连接,如果没有连接,它将一直处于等待状态. ServerSocket常用方法: Socket accept():如果接收到客户端So…
基本网络支持 java.net包主要为网络编程提供支持. 1.InetAddress InetAddress类代表IP地址,还有两个子类:Inet4Address.Inet6Address. package net; import java.io.IOException; import java.net.InetAddress; public class InetAddressTest { public static void main(String[] args) throws IOExcep…
什么是IPV4,什么是IPV6: IPv4使用32个二进制位在网络上创建单个唯一地址.IPv4地址由四个数字表示,用点分隔.每个数字都是十进制(以10为基底)表示的八位二进制(以2为基底)数字,例如:216.27.61.137. IPv6使用128个二进制位在网络上创建一个唯一地址.IPv6地址由八组十六进制(以16为基数)数字表示,这些数字由冒号分隔,如2001:cdba:0000:0000:0000:0000:0000:3257:9652所示.为了节省空间,通常省略包含所有零的数字组,留下冒…
关于协议: 应用层网络协议包括:http,ftp,telnet,..... 传送层网络协议:使用socket封装的TCP,或UDP 端口: 用于网络通讯时传输数据时区分当前网络连接是与本机中的哪个应用程序交互的代号. 这个代号在传输数据时会存在数据报中. java中哪些网络请求类使用TCP封装:    URL, URLConnection, Socket, and ServerSocket java中哪些网络请求类使用UDP封装: DatagramPacket, DatagramSocket,…
1.半关闭的Socket 前面的服务器和客户端通信时总是以行为最小数据单位,但是在某些协议里,通信的数据单位可能是多行的,当出现多行数据时就 出现一个问题:Socket输出流如何表示输出数据已经结束. 在IO中,如果表示输出已经结束,可以通过关闭输出流来实现,但在网络通信中则不同通过关闭输出流表示输出已经结束, 因为如果关闭,对应的Socket也将随之关闭,这样会导致程序无法再从Socket对应输出流中获取数据了. 在这种情况下,socket提供了两个半关闭的方法: shutdownInput(…
什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了DatagramSocket对象作为基于UDP协议的Socket.使用DatagramPacket代表 DatagramSocket发送.接收的数据包.   UDP协议从问世至今已经被使用了很多年,虽然UDP协议目前应用不如TCP协议广泛,但 UDP协议依然是一个非常实用和可行的网络传输层协议.尤其…
1.Java中客户端和服务器端通信的简单实例 Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待状态 ServerSocket包含一个监听来自客户端连接请求的方法. ServerSocket accept():  接收到一个客户端Socket的连接请求,该方法将返回一个与客户端Socket对应的Socket.如果没有客户端连接上来,该方法将一直处于等待状态,线程也被阻 塞. 客户端:…
URL的应用: 获得网页源代码可以用字节流.字符流,流的获取可以用url.openStream(),也可以用con.getInputStream(): 字节流: URL url = new URL("https://www.baidu.com/"); InputStream urlStream = url.openStream(); byte[] b = new byte[1024]; int size = urlStream.read(b, 0, b.length); FileOut…
AIO实现非阻塞通信 java7 NIO2 提供了异步Channel支持,这种异步Channel可以提供更高效的IO,这种基于异步Channel的IO被称为异步IO(Asynchronous IO) IO操作分为两步:1.程序发出IO请求  2.完成实际的IO操作 阻塞和非阻塞IO是根据第一步划分的: 发出IO请求如果阻塞线程则是阻塞IO,如果不阻塞线程,则是非阻塞IO. 同步IO和异步IO是根据第二步划分: 如果实际的IO操作是由操作系统完成,再将结果返回给应用程序,这就是异步IO. 如果实际…
  开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息. 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocket 接收服务端发来的广播 (不允许客户端直接发广播),同时发送点对点数据到UDP服务端DatagramSocket . javax.swing.* 提供客户端图形化界面 生疏知识点: 图形化界面按钮监控键盘 addActionListener(AbstractAction接口实现类);监听器. to…
TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想象河里的流水,他们是连成一片的,其间并没有分界线.TCP底层并不了解上层业务数据的具体含义,他会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送.这就是TCP所谓的拆包和粘包的问题. 一.TCP粘包/拆包问题说明 我们可以通过图解对TCP粘包和拆包问题进行说明,粘包问题如图. 假设客户端分别发送了两个数据包D1和D2给服务…
事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作.Socket就是其中之一,对于Java而言,这些Api存在与java.net 这个包里面,因此只要导入这个包就可以准备网络编程了. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则在需要服务时向服务器提出申请.服务器一般作为守护进程始终运行,监…
下面是TCP java网络编程的基础示例: tcp传输:客户端建立过程的思路:1.创建TCP客户端的Socket服务,使用的是socket对象,建议在创建的过程中,就明确了目的地和要连接的主机2.如果连接建立成功,说明数据传输通道已经建立,该通道就是Socket的I/O流,是底层建立好的,既然是流,就说明有输入流,就有输出流,要换取就找socket获取相关的流即可,   getInputStream()和getOutputStream()的字节流.3.使用输出流,将数据输出:使用输入流,把数据输…
A. A轮目标 复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况. 回顾 Socket 编程,好多年没写(chao)过相关代码了. 重学 NIO,以前学的基本忘光了,毕竟从来没在项目中用过. 学习 Netty,了解基本用法,写一个简单项目练手. 扫读 Netty 核心源码,了解其线程模型,重点学习 Netty 如何使用 NIO. 搜罗面试题,查漏补缺. B. 基础知识 参考资料:<Java网络编程 第四版> 网际层(internet layer): 定义了数据位和…
Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对应关系见下图: 1.2 网络编程三要素之IP地址 目前的版本是ipv4,采用的是点分十进制的表示方式(dotted-decimal notation),一共4位,每一位表示一个字节,因为IP地址是没有负数的,因此表数范围是0-255,子网掩码的存在使得一个IP地址被区分为了两个部分,网络地址以及主机…
参考资料:百度百科TCP协议 本文涉及Java IO流.异常的知识,可参考我的另外的博客 一文简述Java IO 一文简述JAVA内部类和异常 1.概述 计算机网络相关知识: OSI七层模型 一个报文可以类似于一封信,就像下图(引自狂神说Java)非常生动. 网络编程的目的:数据交换.通信 网络通信的要素: 如何实现网络通信? 通信双方地址: ip 端口号 网络协议: HTTP, FTP, TCP, UDP 等等 1.1 IP IP地址:InetAddress(无构造器) 唯一定位一台网络上计算…
新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1]    网络编程认识                [2]  TCP/IP编程小例子 [3]   UDP编程小例子 [4]  简单线程池实例 一.网络编程的主要认识 Java是一种基于网络设计的语言,用于开发网络软件特别便利. 它对于网络的操作都是基于IP层以上的,也就是对TCP/UDP进行操作,所以java的网络编程又称为Socket编程. 一种是TCP/IP 网络编程,…
20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器连接 2.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端 3.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出明文.计算求得明文的Hash函数值,检查是否与传送过来的一致,如果一直,则表示匹配成…
iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐…
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html 一.网络编程  通过使用套接字来达到进程间通信目的的编程就是网络编程. 二.网络编程中常见的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定I…
20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端,一人负责服务器. 使用Git进行版本控制. 利用DES算法进行数据加解密. 二.实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程. 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找…
前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.ne…
20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端 4.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出明文.计算求得明文的Hash函数值,检查是否与传送过来的一致,如果一直,则表示匹配成功. 实验步骤 结对实验 我和20145215卢肖明组队进行实验 由我负…
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在C/S通信模式中,client需要主动创建于server连接的Socket(套接字).服务器端收到了客户端的连接请求,也会创建与客户连接的Socket.Socket可看做是通信两端的收发器.server与client都通过Socket来收发数据. 1.构造Socket 1.Socket() 2.So…