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基础 网络编程相关推荐

  1. 学习笔记-java基础-网络编程

    刚在培训机构学习完JAVA基础和WEB,感觉边学边忘.就把这作为记忆的笔记,我也不知道要不要记笔记,写在本子上太耗费时间了. 一.要想实现网络通信,首先要解决两个问题: ①:如何从网络中定位到一台或多 ...

  2. 黑马程序员——java基础---网络编程

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  3. java基础-网络编程

    1.网络模型: OSI参考模型.TCP/IP参考模型 数据传输的过程:向下走:封包    向上走:拆包 向上走一直拆包,直到得到数据. 2.网络通讯要素 ip地址.端口号.传输协议 Ip和端口用来找对 ...

  4. java基础网络编程

    利用网络,实现两台计算机之间的互相联通.交互. 网络编程有两类: UDP 一种无连接的传输层协议.无连接:指不需要知道对方在不在,只负责发数据传输出去,而对方可能不在,数据便会丢失,所以是不稳定的. ...

  5. 黑马程序员——Java基础——网络编程1

    ------- android培训.java培训.期待与您交流! ---------- 网络编程1 一.获取IP     网络编程主要在传输层 :TCP(Transmission Control Pr ...

  6. Java基础(网络编程基础)

    1.软件结构 C/S:客户端和服务器(QQ.微信) B/S:浏览器和服务器(火狐.IE.谷歌) 2.网络通信协议 网络通信协议: 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行 ...

  7. Java基础——网络编程

    一.网路编程知识 意义:过去我们IO流是把本地的文件传递而已,网络编程是把自己电脑的数据传递给另一台电脑,并且回馈信息.这是数据通讯 1.通讯三要素 1.1 IP地址 (1)获取对方主机IP 1.2 ...

  8. IT十八掌Java基础 网络编程

    网络编程 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网 ...

  9. java基础----网络编程

    网络编程 1.什么是网络?网络模型?网络四要素? 网络: 在计算机领域中网络是信息传输,接收,共享的虚拟平台,通过它把各个点,面,体的联系到一起,从而实现这些资源的共享. 网络模型: 计算机网络是指由 ...

最新文章

  1. python.freelycode.com-优化Pandas代码执行速度入门指南
  2. ubuntu修改字体 样式
  3. 梨花带雨播放器程序开源版本
  4. 又一个网页下载者木马
  5. matlab做信号实验需要安装那些模块_无人机基于Matlab/Simulink的模型开发(连载一)...
  6. Assembly初识
  7. session与cookie的区别和用法
  8. [迁移] Luac的使用
  9. 生存分析第四课:Cox Proportional hazards model
  10. 理解BPDU Filtering的意义(BPDU Filtering在全局配置与接口配置上的区别)
  11. 学习笔记:std::quoted
  12. HDU 4489(DP)
  13. 回顾(JavaScript)Js正则表达式
  14. Kev++之正则表达式系列-视频分享
  15. 如何构建企业数据资产运营体系
  16. 广电电视信号如何生成RTMP流进入流媒体系统网络分发实现手机APP播放
  17. PHP编程基础与实例教程pdf
  18. 刘汝佳 例题7-1 除法(暴力解法)
  19. win10系统桌面图标异常如何修复?
  20. 嵌入式uboot移植之从uboot官方移植

热门文章

  1. 【转】这样记单词最有效
  2. 如何用Qt展示你的GIF动图
  3. 详细图解3阶段事务提交及单点故障和网络脑裂问题
  4. 做软件产品有哪种商业模式?
  5. 【SDOI2009】【BZOJ1227】虔诚的墓主人
  6. Typora自定义主题分享 (Mac风、图片立体感...)
  7. Android 短视频 SDK 转场特效的音视频同步分析
  8. Docker基础、利用Docker Compose部署Vue项目
  9. 关于RedisInsight 创建数据库时 connection time out 连接超时的问题
  10. 从顶级黑客到上市公司老板