----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

现在总结网络编程.在网络通信中,人们把网络通信分为了多个层.为了方便理解,我们在学习计算机网络的时候采用的是
一种五层协议的体系结构,而实际是TCP/IP体系的四层协议的体系结构.,而在JAVA中的网络编程所在的是第三层的:
运输层的协议.在这一层中有一个很重要的概念:IP 表示某一个客户端在网络中的地址.而它分别有两种比较通用的协议:
TCP和UDP.而我现在要总结的网络编程所包括的内容以下的几个内容:

1.网络编程的三要素
2.TCP和UDP协议表现形式
3.应用层开发.

第一点:网络编程的三要素.

要想实现网络编程就首先必须得明确几点,
1.找到要与其通信的电脑在网络中的地址(IP)
2.找到对方的电脑中的应用程序端口(端口)
3.确定传输数据的规则(协议)
我们把这三点称为网络通信的三要素:IP,端口.协议,
在应用层要想实现通信就必须经过这么几个步骤,
IIP地址: 网络中设备的地址.用一组4段的0-255的数字表示如:255.125.32.123,这样的数字不容易记忆.
所以在用于经常用另一种叫做域名的形式来表示,JAVA中就专门定义了一个对象:InetAddress
端口号: 表示应用程序在电脑中的编号,用一组0-65535的数字表示.
传输协议: 主要就是确定通信的时候传递信息的规则.在传输层中现在主流的有两个TCP和UDP协议.

第二点:TCP和UDP协议表现形式.

在通信的过程中传递的其实都是二进制 的数据,要确定不同的二进制表达的不同含意,这就是协议在作用,

UDP: 它是面向无连接的.将源和目的封装在数据包中.每个数据包的大小限制在64K以内.它是不可靠协议.速度快.
在JAVA中,通过对象:DatagramSocket ,来建立UDP协议,数据包用对象:DatagramPacket,
要想使用,UDP协议方式的网络通信需要分成两个步骤:接收数据包和发送数据包

UDP数据包的发送步骤:
1.建立UDP服务.通过对象,DatagramSocket
DatagramSocket ds = new DatagramSocket(10000);//10000为要监听的端口
2.确定要发送的数据,并封装成包,通过对象:DatagramPacket
DatagramPacket dp = new DatagramPacket(data,data.length,InetAddress.getLocalHost(),10000);
//data为已有的字节数组,InetAddress.getLocalHost()为接收端IP地址,我这里设置成的本机的,10000为接收端端口号
3.通过建立的UDP服务把数据包发出去.调用UDP服务中的send方法.
ds.send(dp);
4.关闭资源.
UDP协议的数据包的接收步骤:
1.建立UDPSocket服务.,通常会监听一个端口,其实就是给这个网络应用程序定义一个数字标识.
DatagramSocket ds = new DatagramSocket(10000);//发送端如果不指定端口号则系统会生成一个默认的.
2.建立一个空的数据包对象.用于接收数据并对数据进行提取.
DatagramPacket dp = new DatagramPacket(data,data.length);//建立空的数据包,data是一个空的字节数组,
3.对过UDPSocket服务的receive方法接收数据.
ds.receive(dp);//接收数据包的信息存放到dp中,
4.通过数据包对象的特有方法,对数据包中的内容进行操作(取出).可以查阅API
5.关闭资源.
TCP: 它是有连接的,可以进行大数据通信,可靠,速度较慢.TCP又分为客户/服务器两部分,表示客户端的对象是:Socket,
表示服务器的对象是:ServerSocket.要想实现TCP协议的数据通信,就需要有两个部分:客户端和服务端.

客户端:
1.建立Socket服务,并指定访问的服务器的地址及其端口号,通过对象:Socket.
2.通过Socket服务获得连通的流对象(输入/输出).通过Socket对象的get方法.
3.通过流对象进行数据的传输,
4.关闭资源.
服务器端:
1.建立Socket服务,并指定要监听的端口,通过:ServerSocket,如:
ServerSocket ss = new ServerSocket(10004);//10004为要监听的端口
2.拿到请求服务的客户端.
Socket s = ss.accept();
3.接收客户端发送的请求,通过客户端的输入流.
InputStream is = s.getInputStream();//通过这个流就可以接收客户端的请求
4.对请求做出响应,
5.关闭资源.
关于传输层的TCP和UDP协议的内容总结得也就是这些了.

第三点:应用层开发.
在应用层的通信是用一个URL对象来创建服务的
URL: 代表一个统一资源定位符.它是指向互联网资源的指针.可以通过它的openConnection()连接到远程主机上.
它返回一个URLConnection对象.
URLConnection:该对象是Socket在应用层的封装形式.
要实现一个应用层的通信需要以下的步骤.
1.创建一个URL对象.在创建时需要指定连接的对象.
2.建立连接.调用openConnection()方法.
3.通过返回的URLConnection对象进行通信.
4.关闭资源

呃..这个URL建立的连接是基于TCP协议的.
恩,先到这吧,头脑不是很清醒,对于UDP协议有在应用层与之对应的对象吗?这些我还需要查阅API.
网络编程这一块的复习就到此为止了!

转载于:https://www.cnblogs.com/Occasionally-desert/archive/2013/02/11/2910106.html

黑马程序员_java总结_网络编程基础相关推荐

  1. 黑马程序员_java高级篇网络编程TCP实战Day8(上)

    ---------------------ASP.Net+Android+IOS开发.Net培训.期待与您交流! ----------- 黑马程序员_java高级篇网络编程TCP实战Day8(上) ( ...

  2. 黑马程序员_Java面向对象_包

    7.包 7.1包(package) 对类文件进行分类管理. 给类提供多层命名空间. 写在程序文件的第一行. 类名的全称是:包名.类名. 包也是一种封装形式. 利用命令行自动生成文件夹格式:D:\jav ...

  3. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  4. 黑马程序员 一、java 概述与基础知识

    获取更多资源关注Java帮帮IT资源分享网 一.黑马程序员-java 概述与基础知识 1.何为编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果 的过程. 为了使 ...

  5. java程序设计之网络编程基础教程_Java程序设计之网络编程基础教程

    基本信息 书名:Java程序设计之网络编程基础教程(21世纪高等学校计算机基础实用规划教材) :43.50元 作者:李芝兴 主编 出版社:清华大学出版社 出版日期:2012-12-1 ISBN:978 ...

  6. 黑马程序员_java基础笔记(08)...GUI,网络编程,正则表达式

    GUI(Graphical User Interface)(图形用户接口):用图形的方式,来 显示计算机操作的界面,这样更方便更直观 CLI(Conmand line User Interface)( ...

  7. 黑马程序员_Java解析网络数据流的三种特殊方法

    Java解析网络数据流的三种特殊方法 Java作为最开放的语言,已越来越受到网络程序员的青睐.但这一青睐族有着同样的经历--曾经都为网络上通信的Java数据格式而烦恼. 笔者也不例外,曾经为此而查阅了 ...

  8. 黑马程序员_JAVA相关基础知识

    ------- android培训.java培训.期待与您交流! -------- JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便 ...

  9. 软件测试黑马程序员课后答案_软件测试课后习题答案

    软件测试课后习题答案 [篇一:软件测试基础习题及答案] > 软件测试是一个过程或者一系列过程,用来确认计算和代码完成了 其应该完成的功能,并且不执行其不应该有的操作. 2 .软件测试的目标是什么 ...

最新文章

  1. c语言结构体反射解析,C语言结构体解析
  2. [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  3. Hybris订单价格的折扣维护
  4. 电梯调度需求调研报告
  5. 联想拯救者y空间_ThinkPad X1 Nano上市;联想拯救者R9000X、Y9000X发布
  6. hadoop 权威指南学习笔记ing(1)
  7. 1.ElementUI中table的sortable使用
  8. 使用idea的database模块绘制数据库er图
  9. 技术美术 之 游戏开发流程
  10. [整理]WebUploader + SpringMVC 实现多文件断点续传之二 多文件断点续传
  11. python cryptography key加密_python加密解密库cryptography使用openSSL生成的密匙加密解密...
  12. windows网络和共享中心“查看基本网络信息并设置连接”为“未知”的解决方案
  13. 投资的本质到底是什么?
  14. wave overfly
  15. 光电耦合器的隔离作用是什么?
  16. Linux云计算机构-防盗防击防破解三大工具:webshell、ddos-deflate、Medusa
  17. 你们都出去玩吧,我选择宅在家里「憋文章」
  18. 10年回顾:世界各地开发高手谈Java
  19. sql 纵向求和_SQL 累计求和
  20. QQ春节红包活动如何应对10亿级流量?看看大佬的复盘总结

热门文章

  1. STM32开发 -- Systick定时器
  2. MPU6050开发 -- Linux下测试
  3. 如何定义Java对象
  4. An Introduction to Hashing in the Era of Machine Learning
  5. 深入了解以太坊虚拟机
  6. 微信自动回复和自动抢红包实现原理(二):自动回复
  7. 你应该知道的那些Android小经验
  8. The new NDK support in Android Studio 1.3
  9. Kubernetes初步了解及入门
  10. JZOJ 5419. 【NOIP2017提高A组集训10.24】筹备计划