网络编程:
什么是套接字:
源IP地址和目的IP地址以及源端口和目的端口的组合称为套接字. 其用于表示客户端请求的服务器和服务.
什么是网络编程:
通过套接字来表达到进程之间通信目的的编程就是网络编程.
进程之间的通信:
1):在同一台电脑上,A进程和B进程相互通信.
2):在网络中(外网/内网) A电脑中的aa程序和B电脑中的bb程序相互通信(有网络连接).
Java.net包
网络编程三要素:
1): IP地址
在java中,使用:InetAddress类来表示IP地址
1): 端口
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。
协议端口
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
端口的分类:
1.周知端口(Well Known Ports)
周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。
网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在 地址栏上指定端口号,方法是在地址后面加上冒号“:”(半角),再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。
但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
2.注册端口
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。
3.动态端口(Dynamic Ports)
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。
结论:
1):在同一台电脑中端口不能重复,若重复,则报错端口冲突
2):如果我们需要自定义端口号,建议使用10000以上的.
2): 协议:数据传递/交互的规则.
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
网络协议是由三个要素组成:
(1) 语义。语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
(2) 语法。语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。
(3) 时序。时序是对事件发生顺序的详细说明。(也可称为“同步”)。
人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。
-------------------------------------------------------
http: 超文本传输协议.
https: 用安全套接字层传送的超文本传输协议
ftp : 文件传输协议
mailto: 电子邮件地址
File :当地电脑或网上分享的文件.
URI:
在电脑术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。
Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
URL:
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。[1]
它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738了。
在java中,URI表示统一资源标识符,不能用于定位任何资源,唯一的作用就是解析,
而URL则包含一个可以打开到达该资源的输入流,可以简单理解URL是URI的特例.
简单理解:URI和URL都表示一个资源路径.
创建URL对象:
public URL(String protocol, 协议.
String host, 主机名
int port, 端口号
String file) 文件
throws MalformedURLException
URLEncoder 和URLDecoder:
用于完成普通字符串从 application/x-www-form-urlencoded MIME字符串之间的相互转换.
HTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。有关 HTML 格式编码的更多信息,请参阅 HTML 规范。
编码和解码:
在web的浏览器中,不同的浏览器的编码和解码规则是不一样的.
对于在w3c浏览器,遵循W3C组织规范的浏览器(非IE浏览器):
编码:byte [] 数组名 = 字符串.getByte(String charseName);
解码:String 变量名 = new String (data , String charseName);
对于在IE浏览器:
编码使用:application/x-www-form-urlencoded MIME机制
TCP和UDP协议
传输层协议:
TCP:面向连接(经历过三次询问确定才开始连接),传输可靠(保证数据正确性,保证数据顺序),用于传输大量数据(流模式).速度慢,建立连接需要开销较多(时间,系统资源).
UDP:面向非连接,传输不可靠(数据可能会丢失),用于传输少量数据(数据包模式,速度快)
需要用到的类:
DatagramPacket 类 数据报包类
DatagramSocket 类 此类表示用来发送和接收数据报包的套接字。
错误信息:端口地址已经被占用,不能再绑定(端口冲突),抛出此异常.
解决方式:查看端口是否定义了相同,如果没有,则全部结束.然后重启.