主要内容

软件架构CS/BS

网络通信三要素

TCP通信

Socket套接字

ServerSocket

教学目标

能够辨别UDP和TCP协议特点

能够说出TCP协议下两个常用类名称

能够编写TCP协议下字符串数据传输程序

能够理解TCP协议下文件上传案例

能够理解TCP协议下案例2

第一章 网络编程入门

1.1软件结构

C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。

B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。

两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机 的通信的程序。

1.2网络通信协议

网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就 好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了 统一规定,通信双方必须同时遵守,最终完成数据交换。

TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它 的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的 协议来完成自己的需求。

1.3协议分类

通信的协议还是比较复杂的, java.net 包中包含的类和接口,它们提供低层次的通信细节。我们可以直接使用这 些类和接口,来专注于网络程序开发,而不用考虑通信的细节。

java.net 包中提供了两种常见的网络协议的支持:

TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前, 在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可 靠。

第一次握手,客户端向服务器端发出连接请求,等待服务器确认。

第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。

第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示。

完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可 以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。

UDP:用户数据报协议(User Datagram Protocol)。UDP协议是一个面向无连接的协议。传输数据时,不需要建立连接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个 数据包的大小限制在64k以内。它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。日常应 用中,例如视频会议、QQ聊天等。

1.4网络编程三要素

协议

协议:计算机网络通信必须遵守的规则,已经介绍过了,不再赘述。

IP地址

IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。

IP地址分类

IPv4:是一个32位的二进制数,通常被分为4个字节,表示成 a.b.c.d 的形式,例如 192.168.65.100 。其 中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。

IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。 有资料显示,全球IPv4地址在2011年2月分配完毕。

为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进 制数,表示成 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 ,号称可以为全世界的每一粒沙子编上一个网 址,这样就解决了网络地址资源数量不够的问题。

常用命令

查看本机IP地址,在控制台输入:

ipconfig

检查网络是否连通,在控制台输入:

ping 空格 IP地址ping 220.181.57.216

特殊的IP地址

本机IP地址: 127.0.0.1 、 localhost 。

端口号

网络的通信,本质上是两个进程(应用程序)的通信。每台计算机都有很多的进程,那么在网络通信时,如何区分 这些进程呢?

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

端口号:用两个字节表示的整数,它的取值范围是065535。其中,01023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会 导致当前程序启动失败。

利用 协议 + IP地址 + 端口号 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其 它进程进行交互

第二章 TCP通信程序

2.1概述

TCP通信能实现两台计算机之间的数据交互,通信的两端,要严格区分为客户端(Client)与服务端(Server)。 两端通信时步骤:

1.服务端程序,需要事先启动,等待客户端的连接。

2.客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。

在Java中,提供了两个类用于实现TCP通信程序:

  1. 客户端: java.net.Socket 类表示。创建 Socket 对象,向服务端发出连接请求,服务端响应请求,两者建 立连接开始通信。
  2. 服务端: java.net.ServerSocket 类表示。创建 ServerSocket 对象,相当于开启一个服务,并等待客户端 的连接。

2.2 Socket类

Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。

构造方法

public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指 定的host是null ,则相当于指定地址为回送地址。

小贴士:回送地址(127.x.x.x) 是本机回送地址(Loopback Address),主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,立即返回,不进行任何网络传输。

构造举例,代码如下:

Socket client = new Socket("127.0.0.1

java网络编程_Java基础 网络编程相关推荐

  1. java 单线程执行器_Java基础-并发编程-线程执行器executor

    线程实现方式 Thread.Runnable.Callable //实现Runnable接口的类将被Thread执行,表示一个基本任务 public interface Runnable { //ru ...

  2. java的网络功能与编程_Java的网络功能与编程(转载)

    Java的 网络 功能与编程 徐迎晓 (上海大学计算中心25#) 摘  要:Java语言是Internet上最热门的编程语言,本文针对 Java的 网络 功能,对Java从 网络 上获取图象.声音. ...

  3. java 初级编程题_java基础经典编程题

    java基础经典编程题 Monkey_peach代码 package com.sailor.game; /** * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第 ...

  4. java 图形化编程_java图形化编程

    转载 学习Java Swing图形化编程,我们首先要了解三个最基本的概念:顶层容器,控件,布局. 下面就来介绍一下这三个基本概念 1.顶层容器 什么是顶层容器?当我们使用Java进行图形编程的时候,图 ...

  5. Java面向事件编程_Java面向事件编程

    基于Java的基础课程给教师和学生都提出了新的挑战.虽然Java要比C++简单,但Java作为一种具有大量标准库的面向对象语言这一事实既带来了新的复杂性,同时也带来了新的机会.. 本书作为计算机科学基 ...

  6. java链式编程_Java 链式编程 和 lombok 实现链式编程

    一.链式编程定义 链式编程的原理就是返回一个this对象,就是返回本身,达到链式效果. 二.jdk中 StringBuffer 源码 我们经常用的 StringBuffer 就是 实现了链式的写法. ...

  7. 学习编程的基础(学编程的基础要具备什么)

    学编程需要什么基础?学编程的基础要具备什么? 1.学编程需要数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的.因此,要学好计算机 ...

  8. 计算机应用基础 网络协议,计算机应用基础网络.ppt

    计算机应用基础网络 提出问题 什么是计算机网络?它如何构成? 计算机网络有哪些功能?为什么要使用网络? 什么是网络协议? 什么是网络的体系结构? -- 本单元要点 了解计算机网络的分类方式 了解常用的 ...

  9. java.nio包网络编程_Java NIO网络编程

    来自孙卫琴的Java网络编程,第四章,这段代码感觉有问题啊,第45行的 synchronized(gate){} 这句代码怎么理解啊,可以这样写吗? 1.[文件] EchoServer.java ~  ...

最新文章

  1. [cocos2d-x]图层的旋转缩放效果
  2. ICanPay 统一支付网关
  3. 【大数据系列】hadoop单节点安装官方文档翻译
  4. 探讨一个好算法——找出一百万个数字中十个最大数字的算法
  5. 业务逻辑配置化的可选技术方案
  6. Codejock Suite Pro 19.3.0 Carck版本
  7. 本工具仅仅交流之用,把黑群晖洗白用,如果对此感兴趣请支持正版,请勿用于违法,作者不承担法律和相关连带责任,工具内有详细sn算号器,可供使用还有教程
  8. 无线怎么测试软件,WiFi分析仪软件
  9. MAC Photoshop标题栏不见了
  10. 服务器文件夹加密码怎么设置,服务器文件夹设置密码
  11. 嵌入式系统概述3-嵌入式系统的开发流程和学习基础、方法
  12. 【服务器】 Windows Server 2008 R2 配置HTTPS TLS1.2
  13. 鸢尾花lris数据集的SVM线性分类
  14. R语言Fisher检验的workspace问题
  15. 切比雪夫插值多项式在非线性电路中的应用与比较
  16. 微信中控网页授权的实现
  17. 招聘面试技巧(转载)
  18. 又是一年WWDC,暨回顾去年之旅——Part II
  19. 绝对零度!冷原子量子计算机技术的6大优势
  20. 约瑟夫环的c语言描述

热门文章

  1. ARToolKit从图片生成特征点数据
  2. MySQL: InnoDB 还是 MyISAM?
  3. 用unity制作能量护盾(3)
  4. cmake vscode 高亮_vscode中cmake项目管理和调试
  5. OpenShift 4 - 部署 RabbitMQ 集群
  6. OpenShift 4 Hands-on Lab (1) - 多种方法部署运行应用
  7. Cron表达式的正则表达式
  8. 使用TensorFlow.js的AI聊天机器人一:检测文本中的情绪
  9. SQL Server中的假期表和GetWorkDays函数
  10. 开源软件没你想象中那么安全,Java 开发者尤其要警惕