JAVA基础 网络编程
JAVA基础 网络编程
网络我们每天都会用到的,在我们生活中占的地位也在不断的提高,我们下面就简单了解下网络编程的内容。
想要学习网络编程,首先就需要了解网络编程包含哪些内容。
网络编程包括 IP节点,端口,URL,传输协议。下面我们就分别了解下
IP
IP是定义节点的,有两个重要的版本需要我们了解下,一个是IPV4,是4个字节32位的;另一个是127.0.0.1 ,一般192.168.0.0~192.168.255.255 供组织内部使用的IP,而我们本地的IP,也叫localhost ,IP是127.0.0.1 。
IP与域名:
DNS|域名解析器
InetAddress :getLocalHost,getHostAddress,getByName,
端口 port
端口是区分软件的,同一协议下端口是不能冲突的(即同一协议端口不能重复)
端口是2个字节 用0~65535之间的整数表示端口号
一般8000以内的端口号时预留的端口号。
我们常见的端口号也是需要了解的:
80: http
8080: tomcat
3306: mysql
1521: oracle
InetSocketAddress : 此类实现IP套接字地址(IP地址+端口号)它也可以是一对(主机名+端口号)。
InetSocketAddress(int port) ;InetSocketAddress(String hostname, int port)
InetSocketAddress(InetAddress addr, int port)
getAddress;getHostName;getPort
URL
统一资源定位符。是互联网的三大基石(html,http,url)之一。指向万维网的资源的指针.
URL的组成:协议 http url.getProtocol()
域名 ww.XXX.com url.getHost()
端口号 默认是80 url.getPort()
访问的资源 index.html url.getFile()或url.getPath()
请求参数 username=zhangsan&password=123 url.getQuery()
锚链接 a url.getRef()
http://www.xxx.com:80/index.html?username=zhangsan&password=123#a
爬虫
我们可以简单通过URL写个小爬虫。结合我们之前学习到的IO流进行读取。
public static void main(String[] args) throws IOException {//1.定位互联网中的某个资源URL url = new URL("http://www.XXX.com");//2.打开一个到此URL资源的一个输入流//InputStream openStream() 打开与此 URL的连接并返回 InputStream以从该连接读取。//InputStreamReaderBufferedReader is = new BufferedReader(new InputStreamReader(url.openStream()));String msg = null;while((msg = is.readLine())!=null){System.out.println(msg);}is.close();}
协议
传输协议有分为UDP和TCP,尤其是TCP更是需要我们掌握的。
**UDP:**是非面向面连接的,不安全的,协议简单,开销小效率高,只管写只管发送 一般不超过60k。
**TCP:**是面向连接,安全的,协议复杂,效率低,没有大小限制。
SOCKET 套接字:
相当于在传输层为应用层提供了一个接口,我们可以通过套接字Socket实现传输,不同的协议实现的方法不同,因此我们称为面向Socket编程。
UDP协议
DatagramSocket 定义发送端|接收端 Datagram(数据包)
DatagramPacket 打包
步骤:
发送端 | 接收端 |
---|---|
1.定义发送端 DatagramSocket(int port) 2.准备数据 3.打包 4.发送 send(DatagramPacket) 5.关闭 |
1.定义接收端 DatagramSocket(int port) 2.打包准备接收数据 3.接收 receive(DatagramPacket) 4.处理数据 5.关闭 |
发送端
public static void main(String[] args) throws IOException {System.out.println("-----------------发送端------------------");//1.定义发送端 DatagramSocket(int port)DatagramSocket send = new DatagramSocket(8888);//2.准备数据byte[] arr = "晚安伽卡他卡".getBytes();//3.打包//DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)DatagramPacket packet = new DatagramPacket(arr,0,arr.length,new InetSocketAddress("localhost",9999));//4.发送 send(DatagramPacket)send.send(packet);//5.关闭send.close();}
接收端
public static void main(String[] args) throws Exception{System.out.println("-----------------接收端------------------");//1.定义接收端 DatagramSocket(int port)DatagramSocket rec = new DatagramSocket(9999);//2.打包准备接收数据byte[] arr = new byte[1024];//接收数据的包裹DatagramPacket packet = new DatagramPacket(arr,0,arr.length);//3.接收 receive(DatagramPacket)rec.receive(packet);//4.处理数据byte[] datas = packet.getData();int len = packet.getLength();System.out.println("接收数据个数"+len);System.out.println("接收数据"+datas.length);System.out.println(new String(datas,0,len));//5.关闭rec.close();}
TCP协议
客户端 | 服务端 |
---|---|
基于IO流,一个客户端就是一个Socket,包含输入输出 1.定义客户端 Socket 2.IO操作,获取输出流->写出 3.关闭 |
tcp基础流程->服务器端 1.定义我是服务器端 ServerSocket(int port) 2.阻塞式监听 3.IO操作: 获取输入流 4.关闭资源 |
客户端
public static void main(String[] args) throws IOException {System.out.println("tcp使用单项用户登录-->客户端");//1.定义客户端Socket client = new Socket("localhost",8989);//2.ioDataOutputStream out = new DataOutputStream(new BufferedOutputStream(client.getOutputStream()));out.writeUTF("username=laopei&password=1234");out.flush();//3.关闭out.close();client.close();}
服务端
public static void main(String[] args) throws IOException {System.out.println("tcp实现单项登录-服务端");//1.定义服务端ServerSocket server = new ServerSocket(8989);//2.监听Socket client = server.accept();//3.ioDataInputStream in = new DataInputStream(new BufferedInputStream(client.getInputStream()));String str = in.readUTF();System.out.println(str);//存储用户输入的用户名和密码String name = "";String pwd = "";//校验String[] arr = str.split("&");for(String ss:arr){System.out.println(ss);String[] s = ss.split("=");if("username".equals(s[0])){name = s[1];}else if("password".equals(s[0])){pwd = s[1];}}if("laopei".equals(name) && "1234".equals(pwd)){System.out.println("登录成功");}else{System.out.println("用户名或密码错误..");}//关闭in.close();client.close();server.close();}
同样也可以结合多线程等进行多客户端连接的操作。大家可以试下。
JAVA基础 网络编程相关推荐
- 学习笔记-java基础-网络编程
刚在培训机构学习完JAVA基础和WEB,感觉边学边忘.就把这作为记忆的笔记,我也不知道要不要记笔记,写在本子上太耗费时间了. 一.要想实现网络通信,首先要解决两个问题: ①:如何从网络中定位到一台或多 ...
- 黑马程序员——java基础---网络编程
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...
- java基础-网络编程
1.网络模型: OSI参考模型.TCP/IP参考模型 数据传输的过程:向下走:封包 向上走:拆包 向上走一直拆包,直到得到数据. 2.网络通讯要素 ip地址.端口号.传输协议 Ip和端口用来找对 ...
- java基础网络编程
利用网络,实现两台计算机之间的互相联通.交互. 网络编程有两类: UDP 一种无连接的传输层协议.无连接:指不需要知道对方在不在,只负责发数据传输出去,而对方可能不在,数据便会丢失,所以是不稳定的. ...
- 黑马程序员——Java基础——网络编程1
------- android培训.java培训.期待与您交流! ---------- 网络编程1 一.获取IP 网络编程主要在传输层 :TCP(Transmission Control Pr ...
- Java基础(网络编程基础)
1.软件结构 C/S:客户端和服务器(QQ.微信) B/S:浏览器和服务器(火狐.IE.谷歌) 2.网络通信协议 网络通信协议: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行 ...
- Java基础——网络编程
一.网路编程知识 意义:过去我们IO流是把本地的文件传递而已,网络编程是把自己电脑的数据传递给另一台电脑,并且回馈信息.这是数据通讯 1.通讯三要素 1.1 IP地址 (1)获取对方主机IP 1.2 ...
- IT十八掌Java基础 网络编程
网络编程 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网 ...
- java基础----网络编程
网络编程 1.什么是网络?网络模型?网络四要素? 网络: 在计算机领域中网络是信息传输,接收,共享的虚拟平台,通过它把各个点,面,体的联系到一起,从而实现这些资源的共享. 网络模型: 计算机网络是指由 ...
最新文章
- python.freelycode.com-优化Pandas代码执行速度入门指南
- ubuntu修改字体 样式
- 梨花带雨播放器程序开源版本
- 又一个网页下载者木马
- matlab做信号实验需要安装那些模块_无人机基于Matlab/Simulink的模型开发(连载一)...
- Assembly初识
- session与cookie的区别和用法
- [迁移] Luac的使用
- 生存分析第四课:Cox Proportional hazards model
- 理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别)
- 学习笔记:std::quoted
- HDU 4489(DP)
- 回顾(JavaScript)Js正则表达式
- Kev++之正则表达式系列-视频分享
- 如何构建企业数据资产运营体系
- 广电电视信号如何生成RTMP流进入流媒体系统网络分发实现手机APP播放
- PHP编程基础与实例教程pdf
- 刘汝佳 例题7-1 除法(暴力解法)
- win10系统桌面图标异常如何修复?
- 嵌入式uboot移植之从uboot官方移植