网络编程

Java网络编程--Socket

心不动则不痛 提交于 2019-12-21 17:59:23
在网络编程中,Socket是一种非常通用的方式。所谓socket通常被翻译成"套接字"。很晦涩。其实按我的理解所谓socket就是指两者之间通信的一个管道。 好比刚见面的两个人,一个人伸出手去,等待和你握手。这时候,先伸手的人就是服务器。后伸手的人就是客户端,但是一旦两人握上了手,那么都可以摇手表示你好你好啊。 又好比一部等待呼入的电话A。就可以看成一个服务器。来等待其它人的呼入。一旦你用话机拨打了A的号码。那么你的话机B就是客户端,A就是服务器啦。那么你们就通过电话线建立了一个通信的Socket了。 Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。 首先建立一个服务器端代码如下: //服务器 public class Server0312 { Socket socket=null; //套接字 InputStream is =null;//输入流 OutputStream os =null;//输出流

iOS 网络编程:AFNetworking

北城以北 提交于 2019-12-21 08:38:58
1 简介 1.1 概念 AFNetworking 网络框架并不是IOS自带的框架 ,而是第三方的开源框架。它是对NSURLConnection和NSURLSession API的封装,但是目前AFNetworking 3.0已经删除了基于 NSURLConnection API的所有支持,所以本文只记录基于NSURLSession API的相关接口。AFNetworking 框架是基于Object-C语言,若需要使用Swift语言版可以了解 Alamofire 框架。 个人感觉学习AFNetworking 框架非常麻烦,它没有提供guide,所以只能按着GitHub和头文件进行学习。 1.2 第一个程序 1.2.1 环境配置 环境配置非常简单,有多种方式,在GitHub提供了几种方法,这里使用最简单的方式:导入源码。 新建IOS项目后,导入在GitHub网站下载的AFNetworking 源码,如图 2所示。 图 2 1.2.2 源码 其使用如下所示,只需引入AFNetworking.h文件即可使用其API。 1 #include " AFNetworking.h " 2 -( void )DownloadTask 3 { 4 NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration

Python Day30:网络编程/OSI模型

核能气质少年 提交于 2019-12-21 05:12:34
## 网络编程 ```python 网络编程就是编写基于网络的应用程序 CS结构: 客户端应用程序client(访问数据端) 服务端应用程序:server(提供共享数据端) 学习网络编程,目的就是编写基于C/S结构的应用程序 网络通讯的两个条件: 1,物理传输介质:双绞线/光纤/同轴线/无线电波 2,通讯协议 通讯协议:发送方和接受方共同遵守的一套规则,为了能正确解析数据 OSI七层模型:计算机界的通用语言 物理层———数据链路层———网络层————传输层————会话层————表示层————应用层 会话层、表示层、应用层,都是属于应用程序层的。 物理层:各种物理介质 ``` ## OSI模型之数据链路层 ```python 数据链路层:规定了代表0和1的电信号的分组方式以及一组电信号应该包含哪些内容。以太网协议工作在链路层! 一组电信号构成一个数据包,帧! 每一帧分成报头head0和数据data两部分 head包含(18个字节): 发送源地址Mac:6个字节 接受源地址Mac:6个字节 数据类型(标签+以太类型)6个字节 data包含:46——1500个字节 head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送 ethernet规定接入internet的设备都必须具备网卡,发送端和接收端的地址便是指网卡的地址,即mac地址 mac地址

网络编程1 网络开发基础(Socket、TCP、UDP)

狂风中的少年 提交于 2019-12-21 03:40:02
OSI七层网络模型 1.网络的七层结构:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 2.在网络通信的发送端,其通信数据每到一个通信层,都会被该层协议在数据中添加一个包头数据。而在接收方恰恰相反,数据通过每一层时都会被该层协议剥去相应的包头数据。 TCP/IP 1.IP地址 IP地址是指互联网协议地址(Internet Protocol Address,又译为网际协议地址)。IP地址时IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一个主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 2.Port 端口号:为了区分不同的网络程序,计算机会为每一个· 网络程序分配一个独一无二的端口号,端口是一个虚拟的、逻辑上的概念。 for example:Web服务的端口号是80,FTP服务的端口号是21,SMTP服务的端口号是25。 3.TCP/IP通信协议的网络层次结构 应用层 运输层 网际层IP 网络接口层 4.TCP/IP协议的特性 1.封包交换网络服务 2.可靠流传输服务 3.独立网络技术 4.通用互连 5.端到端应答式 6.标准应用协议 5.TCP/IP中的各种协议 1.IP协议 IP协议是网络层协议,主要职责是把数据从源地址传送到目的地址,并提供两个基本功能--寻址和分段 IP协议提供的是不可靠无连接的服务 2.TCP协议

UNIX网络编程——僵尸进程

那年仲夏 提交于 2019-12-21 00:28:24
在fork()/exec()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。 定义: 在unix术语中, 一个已经终止但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程称为僵尸进程(zombie)。 产生: 怎样产生僵尸进程的: 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度, 仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集, 除此之外,僵尸进程不再占有任何内存空间。它需要它的父进程来为它收尸,如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束

UNIX网络编程——僵尸进程

别来无恙 提交于 2019-12-21 00:27:53
在fork()/exec()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。 定义: 在unix术语中, 一个已经终止但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占用的资源)的进程称为僵尸进程(zombie)。 产生: 怎样产生僵尸进程的: 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度, 仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集, 除此之外,僵尸进程不再占有任何内存空间。它需要它的父进程来为它收尸,如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束

C++网络编程基础

妖精的绣舞 提交于 2019-12-20 22:40:17
1.套接字(Sockets)   套接字分为流套接字和数据报套接字。   流套接字提供双向有序无重复且无记录边界的数据流服务,它适用于处理大量数据。是面向连接的,通信双方进行数据交换之前,必须建立一条路径。   数据报套接字支持双向的数据流,但并不保证传输的可靠性有序性和无重复性。数据报套接字是无连接的。 2.Winsock的启动和终止   Winsock的服务是以动态链接库Winsock DLL形式实现的,所以必须先调用WSAStartup函数对Winsock DLL进行初始化,设定版本号,并分配必要资源。WSAStartup函数原型如下: int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData); 其中wVersionRequested用于指定Winsock库的版本,通常高位字节指定副版本,低位字节则是主版本。然后用宏MAKEWORD(X,Y)(X为高位字节,Y是低位字节)获取wVersionRequested的正确值。lpWSAData参数是指向LPSWSADATA结构的指针,该结构包含了加载库版本有关的信息,它的格式如下: typedef struct WSAData{   WORD      wVersion;  //Winsock版本   WORD      wHightVersion;   char     

Go语言基础之网络编程

♀尐吖头ヾ 提交于 2019-12-20 12:46:23
现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程。 关于网络编程其实是一个很庞大的领域,本文只是简单的演示了如何使用net包进行TCP和UDP通信。如需了解更详细的网络编程请自行检索和阅读专业资料。 互联网协议介绍 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。由于这些协议太过庞大和复杂,没有办法在这里一概而全,只能介绍一下我们日常开发中接触较多的几个协议。 互联网分层模型 互联网的逻辑实现被分为好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的只是最上面的那一层,根本不会感觉到下面的几层。要理解互联网就需要自下而上理解每一层的实现的功能。[osi七层模型] 如上图所示,互联网按照不同的模型划分会有不用的分层,但是不论按照什么模型去划分,越往上的层越靠近用户,越往下的层越靠近硬件。在软件开发中我们使用最多的是上图中将互联网划分为五个分层的模型。 接下来我们一层一层的自底向上介绍一下每一层。 物理层 我们的电脑要与外界互联网通信,需要先把电脑连接网络,我们可以用双绞线、光纤、无线电波等方式。这就叫做”实物理层”

python之网络编程之OSI七层模型与tcp/udp三次握手四次挥手

依然范特西╮ 提交于 2019-12-20 07:36:27
1.客户端/服务端架构 1.硬件c/s架构 2.软件c/s架构 (b/s) 互联网中处处是c/s架构 客户端client《-----基于网络通信------》 server服务器 浏览器客户端 browser《---基于网络通信-----》server 浏览器是客户端(B/S架构也是C/S架构的一种) server端必须满足的条件: 1.稳定运行(网络、硬件、操作系统、服务端应用软件),对外提供服务 (运维负责网络、硬件、操作系统 软件出现bug可以先甩锅给运维) 2.服务端必须绑定一个固定的地址 2.什么是互联网 两大要素 1.底层的物理连接介质,是为了通信铺好道路 2.一套统一的通信标准-----互联网通信协议 如果把计算机看成分布于世界各地的人,那么连接两台计算机之间的internet实际上就是一系列统一的标准, 这些标准称之为互联网协议。 互联网的本质就是一系列的协议,总称为‘互联网协议’(Internet Protocol Suite) 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准。 3.osi七层模型 tcp/ip五层模型讲解 1.物理层功能:主要是基于电器特性发送高低电压(电信号),高电压对应数字1,低电压对应数字0 2.数据链路层: 数据链路层由来 :单纯的电信号0和1没有任何意义,必须规定电信号多少位一组

Java网络编程

女生的网名这么多〃 提交于 2019-12-20 04:04:48
OSI模型包含7个层次: (1)物理层(Physical Layer)     物理层是OSI参考模型的最低层,它利用传输介质为数据链路层提供物理连接。 物理层的作用是通过传输介质发送和接收二进制比特流。 (2) 数据链路层 (Data Link Layer)     数据链路层是为网络层提供服务的,解决两个相邻结点之间的通信问题,传送的协议数据单元称为数据帧。 (3)网络层(Network Layer)     网络层是为传输层提供服务的,传送的协议数据单元称为 数据包 或分组。该层的主要作用是解决如何使数据包通过各结点传送的问题。 (4)传输层(Transport Layer)     传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只    是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。     传输层传送的协议数据单元称为段或报文。 (5)会话层(Session Layer)     会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止 应用程序 之间的会话。 (6)表示层(Presentation Layer)     表示层处理流经结点的数据编码的表示方式问题