网络编程简单介绍与实例
网络相关概念:
Socket网络连接
计算机网络
所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使得计算机之间可以相互传递信息,共享数据、软件等资源。
按地理位置分为:
局域网
城域网
广域网,最大的是Internet
网络编程
所谓网络编程,指的就是在同一个网络中不同机器之间的通信
计算机之间通信需要的条件
IP地址
IP地址指的是互联网地址(Internet Protocol Address ,是联网设备与互联网之间的唯一标识,在同一个网段中,IP地址是唯一的
IP地址是数字型的,是一个32位的二进制,通常将其分成4个8位的二进制数,每8位之间用圆点隔开,每个8位整数可以转换为一个0~255的十进制整数,例如:202.9.128.88
分为IPV4和IPV6
查看IP地址的命令:ipconfig
IP地址分类
A类:保留给政府结构,1.0.0.1 ~ 126.255.255.254
B类:分配给中型企业,128.0.0.1 ~ 191.255.255.254
C类:分配给任何需要的个人,192.0.0.1 ~ 223.255.255.254
D类:用于组播,224.0.0.1 ~ 239.255.255.254
E类:用于实验,240.0.0.1 ~ 255.255.255.254
回收地址:127.0.0.1,指本地机,一般用于测试使用
IP地址可以唯一的确定网络上的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务,此时还需要使用端口
端口
数据的发送和接收都需要通过端口出入计算机,端口号用于唯一标识通信实体上进行网络通讯的程序,同一台机器上不能两个程序占用同一个端口
端口号的取值范围:0~65535
端口分类:
公认端口:0~1023
注册端口:1025~49151
动态或私有端口:1024~65535
常用端口:
mysql:3306
oracle:1521
tomcat:8080
浏览器:80
通信协议
需要通信的设备之间需要实现相同的通信协议
网络分层:
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
通信协议分类:
传输层协议:TCP和UDP
网络层IP协议:IPV4和IPV6,互联网协议
应用层协议:HTTP
TCP/IP、UDP概念
TCP/IP
Transfer Control Protocal传输控制协议
IP Internet Protocal 网际协议
TCP/IP特点是:保持长连接,数据传输比较稳定可靠
TCP连接机制:三次握手机制
断开连接:四次挥手机制
UDP 数据报协议
类似广播、短信,特点:快速,不可靠
应用场景:聊天等实时性不强的程序
Socket网络连接
给予TCP/IP协议,实现长连接,可靠
应用场景:
网络游戏视频、语音通信、文件的上传下载等等
Java中的Socket(套接字)
实现点对点的通信
服务器端:
ServerSocket:用于等待和获得客户端连接
创建:ServerScocket(int port)
port是端口号,一旦创建ServerSocket后就会对该端口进行侦听
常用方法:
Socket accept()接收连接的客户端
执行该方法时,如果没有客户端连接,就会阻塞线程,直到有客户端连接。返回值就时连接上的客户端。
void close()关闭
客户端:
Socket : 用于连接服务器端
创建:
Socket(String ip,int port)
ip就是服务器端的ip地址
port就是服务器端侦听的端口
一旦创建了Socket对象,就建立了和服务器端的连接
常用方法:
InputStream getInputStream()
获得输入流,实现数据的读取
OutputStream getOutputStream()
获得输出流,实现数据的发送
void close()
注意:Socket的IO流关闭后,Socket连接会自动关闭
实现:客户端连接服务器端后,给服务器端发消息
服务器端:
1)创建ServerSocket对象,指定端口
2)执行ServrSocket的accep方法获得客户端的连接
3)通过accept获得客户端的Socket后,调用Socket的getInputStream()方法获得输入流
4)从输入流读取数据,显示
客户端:
1)创建Socket对象,指定服务器ip和端口
2)获得Socket对象的输出流
任务:完成客户端向服务器端上传一个文件
HTTP协议:超文本传输协议
Hyper Text Transfer Protocal
属于应用层协议,基于TCP/IP协议
规定传输的双方,发送文本和接收文本的格式
应用于:浏览器上网
服务器和客户端之间的交互
请求方法:
GET 参数和URL一起发送,不安全,URL的长度是有限制的
POST 参数单独发送,安全,数据长度没有限制
PUT 用于添加数据
DELETE 用于删除
TRACE 用于跟踪
OPTIONS 获得配置参数
HEAD 发送请求头,响应头
响应代码:
200:ok
404:资源不可访问
403:没有权限
405:请求方法没有重写
500:服务器内部错误
HTTP的特点:
1)更加简单、快速
2)无连接:不能保持长连接
3)无状态
Java的HTTP连接
URL 代表网络资源的地址
创建方法:
new URL(String urlStr)
urlStr就是网址
方法:
URLConnection openConnection() 打开连接
HttpURLConnection 网络连接
方法:
InputStream getInputStream()获得输入流
OutputStream getOutputStream()获得输出流
setConnectionTimeOout(long timeout) 设置连接超时
setRequestMethod(String method)设置请求方法
setDoOutput(boolean b)设置是否可以发生数据
disconnect()关闭
实例:
客户端
import java.io.OutputStream;
public static void main(String[] args) { |
服务器端:
import java.io.DataInputStream; import com.sun.imageio.spi.InputStreamImageInputStreamSpi; import jdk.nashorn.internal.runtime.regexp.joni.ast.ConsAltNode; /** |