网络编程基础知识

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

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

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

TCP/IP协议:传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。

它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,

并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能。

链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。

网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。

运输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。

应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。

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

1. UDP:用户数据报协议(User Datagram Protocol)。UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。

简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。

特点:数据被限制在64kb以内,超出这个范围就不能发送了。

数据报(Datagram):网络传输的基本单位

2. TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,

即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。

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

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

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

第三次握手,客户端再次向服务器端发送确认信息,确认连接。

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

3. IP地址:指互联网协议地址(Internet Protocol Address)

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

IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。

为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,

表示成`ABCD:EF01:2345:6789:ABCD:EF01:2345:6789`,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。

4. 端口号

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

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

端口号:用两个字节表示的整数,它的取值范围是0~65535。

其中,0~1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。

如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

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

java实现服务端和客户端

java中提供两个类

1. 客户端:`java.net.Socket` 类表示。创建`Socket`对象,向服务端发出连接请求,服务端响应请求,两者建立连接开始通信。

2. 服务端:`java.net.ServerSocket` 类表示。创建`ServerSocket`对象,相当于开启一个服务,并等待客户端的连接。

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

构造方法:

public 

成员方法:

public 

ServerSocket类:这个类实现了服务器套接字,该对象等待通过网络的请求。

构造方法

public 

成员方法

public 

java socket如何请求485协议_javaSE第十五部分 网络编程(1)Socket和ServerSocket相关推荐

  1. Java网络编程:socket与Netty

    Java网络编程:socket与Netty Java网络编程:socket与Netty TCP/IP介绍 简介 数据传输 TCP粘包和黏包 现象 为什么出现 如何解决 Socket介绍 介绍 功能开发 ...

  2. Java基础学习——第十四章 网络编程

    Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...

  3. Java网络编程(四)—— ServerSocket(一)

    Java网络编程(四)-- ServerSocket(一) Java网络编程(四)-- ServerSocket(一) 总述 创建ServerSocket 绑定端口 使用ServerSocket 总述 ...

  4. Python 网络编程(Socket)

    Python 网络编程(Socket) 一.Socket 套接字 1.Socket 编程 socket本质是编程接口(API),对TCP/IP的封装,提供可供程序员做网络开发所用的接口.Socket ...

  5. 网络编程(part9)--socket套接字编程之TCP套接字

    鄙人学习笔记 文章目录 套接字介绍 定义 套接字分类(针对TCP和UDP的分类) TCP套接字编程 服务端流程 代码实现 举个例子 客户端流程 代码实现 举个例子 TCP套接字数据传输特点 做个练习 ...

  6. 20165230 《Java程序设计》实验五《网络编程与安全》实验报告

    20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...

  7. C++笔记--Linux网络编程(15-0)-socket(供自查,文档说明)

    目录 网络基础 协议的概念 什么是协议 典型协议 网络应用程序设计模式 C/S模式 B/S模式 优缺点 分层模型 OSI七层模型 TCP/IP四层模型 通信过程 协议格式 数据包封装 以太网帧格式 A ...

  8. 网络编程及socket模块

    目录 1.必备基础 1.1 网络架构 1.1.1 交换机 1.1.2 路由器 1.1.3 三层交换机 1.1.4 小型企业基础网络架构 1.1.5 家庭网络架构 1.1.6 互联网 1.2 网络核心词 ...

  9. 2018-2019-2 20175227张雪莹《Java程序设计》实验五 《网络编程与安全》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验五 <网络编程与安全> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:20 ...

最新文章

  1. Linux:检查当前运行级别的五种方法
  2. 同济大学和东南大学计算机哪个好,东南大学和同济大学哪个好?选择哪个以后发展比较好?...
  3. 【“探探”为例】手把手教你用最少的代码实现各种“机器人”
  4. 图解VC++工具栏和状态栏编程实例
  5. cisco 2911 GRE ***
  6. php有哪些程序结构,PHP常用控制结构
  7. 电信充q币短信怎么发_移动、联通、电信话费快来领!微信小额提现免手续费方法!刚需羊毛!...
  8. java xml 解析 列表_用Java解析高级XML
  9. 查看HTML请求(request)中的标头(Headers)信息
  10. 例3.6 二叉搜索树 - 九度教程第36题(二叉排序树)
  11. echarts地图迁徙图
  12. 买了一个西瓜,切开后傻眼,这是冬瓜出轨了?还是西瓜变心了?
  13. 智慧果园系统——以水肥一体化系统功能为基础实现智慧果园系统项目 需求文档
  14. [转] 【幽默搞笑】笑死你,别怪我!(狠逗、狠强)
  15. 海面电磁散射MATLAB程序,matlab 电磁散射特性计算
  16. 计算机无法从usb启动不了,用u盘启动不了电脑解决方法
  17. 冒烟测试(smoke test)、可用性测试(sanity test)和回归测试(regression test)
  18. 邵阳市计算机学校某灿,最近喜欢上一首歌。。 大家把自己觉得好听的歌和我分享分享吧。...
  19. C语言函数和主函数的调用
  20. 第三届长沙 · 中国 1024 程序员节:共迎算力新时代,开源新未来!

热门文章

  1. 区块如何防篡改_深入浅出:一条数据是如何完成上链的
  2. python爬取数据保存为csv时生成编号_将爬取到到数据以CSV格式存储
  3. java sax xml文件解析_java解析xml文件-DOM/SAX
  4. pyecharts anaconda_Pyecharts安装使用和绘图案例
  5. 中国石油计算机文化基础答案,中国石油大学17年秋《计算机文化基础》第二次在线作业答案...
  6. 北京科技大学计算机硕士,北京科技大学计算机专业硕士只有面授上课吗
  7. 非关型数据库之Hbase
  8. CentOS7.6下安装Ambari
  9. JAVA知识基础(十一):异常
  10. 工欲善其事必先利其器(一)