2-4 网络编程和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.24
	D类:用于组播,224.0.0.1~239.255.255.254
	E类:用于实验,240.0.0.1~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
	Transfer Control Protocal传输控制协议
	IP 
	Internet Protocal	网际协议
	TCP/IP特点:保持长连接,数据传输比较稳定可靠
	TCP连接机制:三次握手机制
	        断开机制:四次挥手机制
	UDP数据报协议
		类似广播、短信,特点:快速,不可靠
		应用场景:聊天等实时性不强的程序

socket网络连接

基于TCP/IP协议、实现长连接,可靠
应用场景:
	网络游戏、视频、语言通信、文件的上传下载等等

Java中的Socket(套接字)

实现点对点的通信

服务器端

	ServerSocket	用于等待和获得客户端连接
	创建:
		ServerSocket(int port)
		port是端口号,一旦创建ServerSocket后,就会对该端口进行侦听
	常用方法:
		Socket accept() 接收连接的客户端
			执行该方法时,如果当前没有客户端连接,就回阻塞线程,直到有客户端连接。返回值Ssocket就是连							接上来的客户端
		void close()

客户端

	Socket		用于连接服务器端
	创建:
		Socket(String ip,int port)
		ip就是服务器端的IP地址,port就是服务器端侦听的端口.
		一旦创建了Socket对象,就建立和服务器端的连接
	常用方法:
		InputStream getInputStream()
			获得输入流,实现数据的读取
		OutputStream getOutputStream()
			获得输出流,实现数据的发送
		void close()
		注意:Socket的IO流关闭后,Socket连接会自动关闭

客户端连接服务器端后,给服务器端发消息
在这里插入图片描述
服务器端:
1)创建ServerSocket对象,指定端口
2)执行ServerSocket的accept方法获得客户端连接
3)通过accept获得客户端Socket后,调用Socket的getInputStream()方法获得输入流
4)从输入流读取时数据,显示出来
客户端:
1)创建Socket对象,指定服务器ip和端口
2)获得Socket对象的输出流,getOutputStream
3)通过输出流发送数据

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)五连接,不能保持长连接
		比如:打开百度,输入百度地址,会访问百度的服务器,服务器把百度的HTML代码发给浏览器,发送完后浏览器和服务				器断开。
	3)无状态,服务器不会保留客户端(浏览器)的状态(数据)

Java的HTTP连接
	URL		代表网络资源的地址
		创建方法:
			new URL(String urlStr)
			urlStr就是网址
		方法:
			URLConnection openConnection()打开连接

	HttpURLConnection	网络连接
		方法:
			nputStream getInputStream()			获得输入流                
			OutputStream getOutputStream() 		获得输出流                
			setConnectionTimeout(long timeout) 	设置连接超时                
			setRequestMethod(String method)		设置请求方法                
			int getResponseCode()				获得相应代码                
			setDoOutput(boolean b)			设置是否可以发生数据                
			disconnect()					关闭

作业:
1、实现一个查询系统, 创建商品表,定义编号,名称,价格,产地等字段,在表中插入一些数据 系统分为客户端和服务器端,客户端输入商品名称的关键字,发送给服务器端,服务器端查询和关键字有关的商品,将商品信息发送给客户端,客户端要显示查询到的商品。
0)定义商品类
1)建库建表,插数据
2)客户端向服务器端发送一条数据,打印
3)服务端用该数据作为关键字,对数据库进行模糊查询,获得List集合,打印
4)使用Gson将List集合转换为字符串,发送给客户端
5)客户端连接服务器,发送数据后,读取字符串
6)将字符串转换为List集合,打印

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值