网络编程

深入学习socket网络编程,以java语言为例

余生长醉 提交于 2019-12-06 20:00:31
了解java的socket编程与Linux Socket API之间的关系 一、java的网络编程 1、socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信。主机A的应用程序要能和服务器B进行通信,必须通过Socket建立连接,而建立Socket连接本质上就是依靠TCP/IP协议来建立TCP连接。TCP协议是传输层协议,建立TCP连接还需要用到底层的各种协议的服务,其中最主要的是依靠IP协议来寻找网络中的主机。处于网络层的IP协议可以通过IP地址找到所要寻找的目标主机,但是一台主机可能运行着多个应用程序,我们必须指定TCP或UDP的地址(端口号)的确定端口号,因此一个Socket实例唯一代表一个主机上的应用程序的通信链路。 2、java socket的底层实现 Java socket服务器的建立步骤如下: 1.创建服务器ServerSocket对象和系统要指定的端口号 2.使用ServerSocket对象中的accept() 获取请求的客户端对象socket 3.使用socket对象中的方法getInputStream获取网络字节输入流对象InputStream 4.使用网络字节输入流对象InputStream的read方法,读取客户端发送的数据 5

网络编程

时光毁灭记忆、已成空白 提交于 2019-12-06 15:27:09
通信协议:传输码率,代码结构,传输控制….. TCP 面向连接,稳定 三次握手,四次挥手 UDP 面向无连接,不稳定 客户端、服务端:没有明确的界限 客户端 InetAddress serverIP = InetAddress.getByName("127.0.0.1"); int port = 9999; Socket socket = new Socket(serverIP,port);创建一个socket连接 OutputStream os = socket.getOutputStream();发送消息 IO流 服务器 建立服务的端口 ServerSocket 等待用户的链接 accept 接收用的消息 eg:文件上传 客户端 public class Demo1 { public static void main(String[] args) throws IOException { BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("C:\\Users\\张孛\\Desktop\\1许巍 - 曾经的你.mp3")); Socket socket = new Socket("127.0.0.1",5555); OutputStream outputStream =

网络编程

喜你入骨 提交于 2019-12-06 15:26:32
通信协议:传输码率,代码结构,传输控制…..TCP面向连接,稳定三次握手,四次挥手UDP 面向无连接,不稳定客户端、服务端:没有明确的界限 客户端InetAddress serverIP = InetAddress.getByName("127.0.0.1");int port = 9999;Socket socket = new Socket(serverIP,port);创建一个socket连接OutputStream os = socket.getOutputStream();发送消息 IO流服务器建立服务的端口 ServerSocket等待用户的链接 accept接收用的消息 eg:文件上传客户端public class Demo1 { public static void main(String[] args) throws IOException { BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("C:\\Users\\张孛\\Desktop\\1许巍 - 曾经的你.mp3")); Socket socket = new Socket("127.0.0.1",5555); OutputStream outputStream = socket

网络编程

*爱你&永不变心* 提交于 2019-12-06 15:09:31
目录 网络编程 一、软件开发架构 二、互联网协议 网络编程 一、软件开发架构 C/S架构:客户端与服务器端架构 C就是Client:客户端 S就是Server:服务端 客户端一般指客户端应用程序exe,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖很大 比如:微信客户端、QQ客户端等 优点 软件的使用稳定 节省网络资源 缺点 安装麻烦,用户体验差 软件的每一次更新,用户都需要重新下载或更新版本 B/S架构:浏览器端与服务器端架构 B就是Browser:浏览器端 S就是Server:服务器端 Browser浏览器端,其实也是客户端,只是这个客户端并不需要大家去装什么应用程序,只需要在浏览器上通过HTTP请求服务器端相关的资源(网页资源),客户端Browser浏览器就能进行增删改查 比如:淘宝网页版、京东网页版等 优点 软件的使用方便 无须跟着软件的更新去下载 缺点 如果网络不稳定,软件的使用就不稳定 二、互联网协议 计算机与计算机之间通信 语言 是人与人之间沟通的介质 协议 是计算机与计算机之间沟通的介质 互联网协议按照功能 不同分为OSI七层或TCP/IP五层或TCP/IP四层 ​ 这七层协议从下往上记会比较好记 连接通信 交换机 :所有连接了同一个交换机的电脑彼此之间都是互联的 三层交换机:既有叫交换机功能,又具有路由器功能 四层交换机

网络编程基础

走远了吗. 提交于 2019-12-06 15:07:06
目录 网络编程 1.软件的开发架构 网络编程 1.软件的开发架构 C/S架构: ​ client:客户端 ​ Server:服务端 比如:微信客户端,qq客户端等 优点: ​ -软件的使用稳定 ​ -节省网络资源 缺点: ​ -安装麻烦,用户体验差 ​ -软件的每一次更新,用户都需要重新下载更新版本、 B/S框架 ​ Browser:(本质上是一个客户端,)浏览器 ​ Server:服务端 比如:在浏览器上输入一个网址 ​ 优点: ​ -软件使用方便 ​ -无需跟着软件的更新下载 ​ -可以通过浏览器使用各个软件 ​ 缺点: ​ -如果网络不稳定,软件的使用就不稳定 目前比较流行的B/S框架 用户的体验高,现在的网络都已经满足要求了。 客户端与服务端: 服务端: 24小时不间断提供服务。 (比如: 惠州淡水区某一个美丽的场所是一个服务端,可以提供服务) 客户端: 客户想要找服务时,就去访问服务端。 (比如: hcy去寻求心灵辅导,比如学习英文!) 三 往后学习的脉络 - 学习网络编程, 并发编程, 数据库 ----》 可以开发一套 C/S架构的软件。 - 学习前端(html/css/js), web框架(Django) ----》 可以开发一套 B/S架构的软件。 四 计算机与计算机之间通信: - 语言是人与人之间沟通的介质! - 协议是计算机与计算机之间沟通介质! 五 网络编程

python基础-网络编程part01

南楼画角 提交于 2019-12-06 14:31:47
软件开发架构 C/S(Client / Server) 架构 概念 :是一种软件系统体系结构。Client是客户端,Server是服务端。 客户端需要安装专用的客户端软件。 比如:微信、QQ、王者荣耀等应用程序就是C/S结构。 优点 :1)降低通信成本,节省网络资源;2)软件的使用相对稳定 缺点 :1)维护升级相对困难;2)安装麻烦,用户体验差 B/S(Browser/Server)架构 概念 :随着互联网的发展,web出现后兴起的一种网络结构模式。 安装浏览器后,就可以通过web Server与服务器进行数据交互 。比如:上百度搜索,浏览网页等就是使用“B/S”架构在进行数据交互。 浏览器本质上也是一个客户端,B/S 是基于C/S 的基础上实现的 优点 :1)维护和升级方式更便捷,只需维护升级服务器端即可;2)软件的使用方便 缺点 :1)依赖于网络,网络不稳定,软件就不稳定(现在网络发达,可忽略) 网络编程 计算机之间通信的介质是 互联网协议 。 互联网协议 按照功能不同可分为OSI七层或TCP/IP五层或TCP/IP四层 OSI(Open System Interconnection):开放式系统互联,把网络通信的工作分为7层,分别是 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 网络编程主要看TCP/IP五层 物理层: 获取到目的计算机的电信号数据 数据链路层:

读书笔记_python网络编程3_(3)

北城以北 提交于 2019-12-06 13:12:47
3.TCP:传输控制协议 第一个版本在1974年定义,建立在网际层协议(IP)提供的数据包传输技术之上。TCP使程序可以使用连续的数据流进行相互通信。 除非网络原因导致连接中断/冻结,TCP都能保证将数据流完好无缺地传输至接收方,不会发生丢包、重包、乱序问题。 传输文档/文件的协议都使用TCP,包括浏览网页、文件传输、电子邮件的所有主要机制,也是人机间进行长对话的协议的基础之一,如SSH/聊天协议 经过30年的改进,现代TCP相当精良,除了协议设计专家,很少有人能再改进现代TCP栈的性能,就算是消息队列这种对性能要求很高的程序, 也会选择TCP作为传输媒介。 3.1. TCP工作原理:数据包被隐藏在协议层之下,程序只需向目标机器发送流数据,TCP会将丢失的信息重传,保证信息成功到达目标机器 经典定义来自1981年的RFC 793,如何提供可靠连接,基本原理: 3.1.1. 每个TCP数据包都有一个序列号,接收方通过该序列号将响应数据包正确排序,也可通过该序列号发现传输序列中丢失的数据包,并请求进行重传。 3.1.2. TCP不使用顺序整数作为数据包的序列号,而是通过计数器来记录发送的字节数。如,包含1024字节的数据表的序列号为7200, 下一个数据包序列号就为8224。网络栈无需记录如何将数据流分割为数据包,需要重传,可以使用另一种分割方式,将数据流分为多个新数据包(需要传输更多

读书笔记_python网络编程3_(3)

眉间皱痕 提交于 2019-12-06 13:12:25
3.TCP:传输控制协议 第一个版本在1974年定义,建立在网际层协议(IP)提供的数据包传输技术之上。TCP使程序可以使用连续的数据流进行相互通信。 除非网络原因导致连接中断/冻结,TCP都能保证将数据流完好无缺地传输至接收方,不会发生丢包、重包、乱序问题。 传输文档/文件的协议都使用TCP,包括浏览网页、文件传输、电子邮件的所有主要机制,也是人机间进行长对话的协议的基础之一,如SSH/聊天协议 经过30年的改进,现代TCP相当精良,除了协议设计专家,很少有人能再改进现代TCP栈的性能,就算是消息队列这种对性能要求很高的程序, 也会选择TCP作为传输媒介。 3.1. TCP工作原理:数据包被隐藏在协议层之下,程序只需向目标机器发送流数据,TCP会将丢失的信息重传,保证信息成功到达目标机器 经典定义来自1981年的RFC 793,如何提供可靠连接,基本原理: 3.1.1. 每个TCP数据包都有一个序列号,接收方通过该序列号将响应数据包正确排序,也可通过该序列号发现传输序列中丢失的数据包,并请求进行重传。 3.1.2. TCP不使用顺序整数作为数据包的序列号,而是通过计数器来记录发送的字节数。如,包含1024字节的数据表的序列号为7200, 下一个数据包序列号就为8224。网络栈无需记录如何将数据流分割为数据包,需要重传,可以使用另一种分割方式,将数据流分为多个新数据包(需要传输更多

网络编程

依然范特西╮ 提交于 2019-12-06 12:46:15
网络编程 软件开发架构: 1.应用类(C/S架构):一些像qq,微信等桌面应用。​• C:Client(客户端):是一个需要先安装后才能运行在用户的电脑上,对客户的电脑操作系统环境依赖很大。​• S:Server(服务器端) • 2.Web类(B/S架构):一些通过像百度,博客园等通过浏览器就可以直接访问的应用。 ​• B:Browser(浏览器):也是一种客户端,是一种不用安装程序的客户端。 • S:Server(服务器端)​• 本质:实现两个程序之间通讯 网络协议 不同计算机之间实现无障碍的通信,除了要物理介质外还要由一套共有的标准,这个标准就是互联网协议。​网络协议:​• **os**七层架构:​• 应用层: 各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作 。​• ~~表示层:~~对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。​• ~~会话层:~~负责连接,建立和断开连接的时机,数据的发送顺序。​• 传输层:实现软件与软件之间的通信。​• 网络层:ip协议可以跨局域网传输并且ip地址生成唯一标识互联网中独一无二的一台机器。​• 数据链路层:基于以太网协议的通信方式,无法跨局域通信,会有广播风暴。​• 物理层:物理链接介质,传递电信号。 TCP协议: 三次握手,四次挥手原则: 发送数据:

网络编程 软件开发架构,互联网协议

橙三吉。 提交于 2019-12-06 12:34:37
网络开发架构 C/S架构:   Client: 客户端   Server: 服务端   比如: 微信客户端、QQ客户端等...   优点:     - 软件的使用稳定     - 节省网络资源   缺点:     - 安装麻烦,用户体验差     - 软件的每一次更新,用户都需要重新下载或更新版本 B/S架构:   Browser(本质上也是一个客户端): 浏览器   Server: 服务端   比如: 在浏览器上输入一个 网址   优点:     - 软件的使用方便     - 无需跟着软件的更新去下载   缺点:     - 如果网络不稳定,软件的使用就不稳定 # 比较流行: B/S架构,用户体验高。 客户端与服务端:   服务端: 24小时不间断提供服务。   客户端: 客户想要找服务时,就去访问服务端。 之后的学习路径: - 学习网络编程, 并发编程, 数据库 ----》 可以开发一套 C/S架构的软件。 - 学习前端(html/css/js), web框架(Django) ----》 可以开发一套 B/S架构的软件。 计算机与计算机之间通信: - 语言是人与人之间沟通的介质! - 协议 是计算机与计算机之间沟通介质! 网络编程 - 所有最新最牛的技术,都源自于军事:   - 可以远程实时获取数据,实现远程通信 - 如何实现远程通信: ----》 物理连接介质   - 电话