Java基础知识—网络编程

网络编程

概念
	Internet,由在不同的地理位置,不同的计算机主机,互联形成一个计算机系统。
		有通讯和数据共享的作用
		网络编程:在已经有了完备成熟的网络系统之后,在整个基础之上,使用网络进行编程,对应用层进行设计活动
网络编程三要素
	(一)IP地址:
		在计算机网络中,每一台计算机的网络中的唯一标志。
		分类:
				IPV4,使用40-255的数字,来表示一个IP地址,322^32 40亿
				四个字节中,可能有两个字节或者三个字节表示所在的子网;
				特殊的本地地址:localhost 127.0.0.1
				相关命令:ipconfig ping
				IPV6
	(二)网络端口
			使用两个字节 0-65535 ,最多进程65535;
			 当程序运行时,需要一个端口号,在城西结束后,端口号被回收;
			 在网络程序中,需要现在网络中找到IP地址,找到计算机,再找到应用进程对应的端口号;
			 分配:在程序启动的时候随机分配,也可以指定;
			 常用的端口号:
			 	1.操作系统:0-1024
			 	MySQL:3306
			 	Tomcat:8080
			 	oracle:1521
			 	QQ:4000
	(三)通讯协议 
			1.用户通信双方在信息交互时,对信息的包装和解析的规则,就称为协议;
			2.网络分析:
				应用层:http https ftp
				传输层:UDP(不可靠) TCP(可靠)
				网络层:IP协议
				物理层:底层硬件设备和数据的完整和校验
		InetAddress 类
			1.用于描述IP的对象所属的类型(IP地址)
			2.获取方式:
				static InetAddress getByName(String host);
					getHostName() getAddress()【使用数组的Arrays.toString()static InetAddress getByAddress(byte[] address)
				static InetAddress getLocalHost():返回本地主机               
UDP和TCP
		都是传输层的协议,都是端到端的协议;
		UDP:面向无连接,不安全,但效率高,只区分发送端和接收端,而不区分客户端和服务端;
		TCP:面向连接,需要三次握手确认,效率低,安全性高,区分客户端和用户端;
		B/S:运算主要在服务上,浏览器只是展示显示,服务器压力很大,维护成本较低
		C/S:两端都在进行运算,减轻服务器压力,服务成本大
UDP编程
		1.基于Socket编程。Socket:插座,套接字;
		2.UDP协议:使用的是DatagramSocket
		3.发送端:
			1.准备通讯点对象
			2.准备发送的包对象
			3.发送send()
		4.接收端:
			1.准备接收端点对象
			2.准备接收数据的容器
			3.调用通讯点的接收方法 receive()为堵塞式方法;
			4.解析数据包,数据包的内容,数据长度,发送端的地址和端口号
		5.构造方法
			DatagramSocket();空参的构造方法,没有指定端口号,端口号为随机分配,一般用于发送端;
			DtagramSocket(int port);指定端口号,一般用于接收端;
		6.常用方法
			send(DatadramPacket dp):将一个数据包进行发送;
			receive(DatagramPacket dp):将数据接收到数据包中;
		7.DatagramPacket的构造方法
			DatagramPacket(buf,0,len,address,port)
			常用方法:
				getData()获取数据包
				getLength()数据的长度
				getAddress()获取发送端的地址
				getPort()获取发送端的端口号
TCP编程
	1.使用的通讯点依然是Socket类型;
	2.客户端和服务端获取Socket对象的区别:
		1.客户端使用Socket的构造方法,创建一个Socket对象;
		2.服务器不能使用自己创建的方法,而是使用一个服务端的特殊的对象,接收客户端发来的请求,生成一个为客户端服务的Socket对象
	3.TCP客户端
		Socket(ip地址,端口号);客户在创建的时候明确链接哪个服务器;
	4.TCP服务端
		ServerSocket(端口号):服务器端
		accept():接收用户发送的数据,这是阻塞式方法
	5.获取IO流对象	
			通过Socket对象获取网络的输入输出流;
			getOutputStream()
			getInputStream()
	6.释放流资源和通讯点对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值