socket函数

socket实现目录路径的相关操作

若如初见. 提交于 2019-12-01 22:24:10
本知识需要注意! 1.客户端输入路径后,到达服务器端需要先加上"/"否则可能会出错 2.找到该路径下的目录内容调用os的listdir()方法,返回的是一个列表的形式,必须将其格式化为字符串 3.目录内容格式化为字符串,需要用某个字符去作为分隔符,再用分隔符.join()的方法将列表转为指定分隔符分隔的字符串 4.到达客户端时,输出split()按某个特定分隔符分隔后的列表即可输出目录内容 5.服务器端的返回上一级目录时,其原理是去掉当前路径的路径名,如c:/test/111,要返回到test则需要去掉114 6.依据第五点的原理,需要将当前路径按windows的分隔符进行分隔,但是此方法分隔成列表后列表最后一个元素会多出一个空格, 所以去掉路径名的同时也需要去掉空格,即在split()后加上[:-2]即可(去掉列表最后的两个元素) #server层 import socket import os sk=socket.socket() sk.bind(("10.70.2.143",8080)) sk.listen() conn,addr=sk.accept() #获取当前路径,以后的操作都需要根据该路径进行操作 abs_path=conn.recv(1024).decode("utf-8") #需要加上"/"否则可能会出错 current_path=abs_path+"/"

后端开发工程师面试题汇总 | 网络知识

本秂侑毒 提交于 2019-12-01 18:13:01
无论做前端开发还是后端开发,网络知识是必备的知识。这部分知识是基础中的基础,是我们必须掌握的内容。网络相关的问题也是在面试过程中经常被问到的内容。本文主要梳理了一下网络相关的主要知识点及面试中经常被问到的内容,希望对大家有所帮助。 OSI有哪几层,会画出来,知道主要几层的各自作用 OSI(Open System Interconnect),即开放式系统互联,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。其一共有7层: 1. 应用层(数据):确定进程之间通信的性质以满足用户需要以及提供网络与用户应用 2. 表示层(数据):主要解决拥护信息的语法表示问题,如加密解密 3. 会话层(数据):提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制,如服务器验证用户登录便是由会话层完成的 4. 运输层(段):实现网络不同主机上用户进程之间的数据通信,可靠 与不可靠的传输,传输层的错误检测,流量控制等 5. 网络层(包):提供逻辑地址(IP)、选路,数据从源端到目的端的 传输 6. 数据链路层(帧):将上层数据封装成帧,用MAC地址访问媒介,错误检测与修正 7. 物理层(比特流):设备之间比特流的传输,物理接口,电气特性等* TCP/IP有哪几层,会画出来,知道所有层数的作用,会列举各层主要的协议名称 TCP/IP分层模型(TCP/IP Layening Model

Android 世界中,谁喊醒了 Zygote ?

断了今生、忘了曾经 提交于 2019-12-01 10:33:39
本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 文中源码链接: SystemServer.java ActivityManagerService.java Process.java ZygoteProcess.java 对 Zygote 和 SystemServer 启动流程还不熟悉的建议阅读下面两篇文章: Java 世界的盘古和女娲 —— Zygote Zygote 家的大儿子 —— SystemServer Zygote 作为 Android 世界的受精卵,在成功繁殖出 system_server 进程之后并没有完全功成身退,仍然承担着受精卵的责任。 Zygote 通过调用其持有的 ZygoteServer 对象的 runSelectLoop() 方法开始等待客户端的呼唤,有求必应。客户端的请求无非是创建应用进程,以 startActivity() 为例,假如开启的是一个尚未创建进程的应用,那么就会向 Zygote 请求创建进程。下面将从 客户端发送请求 和 服务端处理请求 两方面来进行解析。 客户端发送请求 startActivity() 的具体流程这里就不分析了,系列后续文章会写到。我们直接看到创建进程的 startProcess() 方法,该方法在 ActivityManagerService 中,后面简称 AMS 。

Update:SparkStreaming原理_运行过程_高级特性

跟風遠走 提交于 2019-12-01 07:05:25
Spark Streaming 导读 介绍 入门 原理 操作 Table of Contents 1. Spark Streaming 介绍 2. Spark Streaming 入门 2. 原理 3. 操作 1. Spark Streaming 介绍 导读 流式计算的场景 流式计算框架 Spark Streaming 的特点 新的场景 通过对现阶段一些常见的需求进行整理, 我们要问自己一个问题, 这些需求如何解决? 场景 解释 商品推荐 京东和淘宝这样的商城在购物车, 商品详情等地方都有商品推荐的模块 商品推荐的要求 快速的处理, 加入购物车以后就需要迅速的进行推荐 数据量大 需要使用一些推荐算法 工业大数据 现在的工场中, 设备是可以联网的, 汇报自己的运行状态, 在应用层可以针对这些数据来分析运行状况和稳健程度, 展示工件完成情况, 运行情况等 工业大数据的需求 快速响应, 及时预测问题 数据是以事件的形式动态的产品和汇报 因为是运行状态信息, 而且一般都是几十上百台机器, 所以汇报的数据量很大 监控 一般的大型集群和平台, 都需要对其进行监控 监控的需求 要针对各种数据库, 包括 MySQL , HBase 等进行监控 要针对应用进行监控, 例如 Tomcat , Nginx , Node.js 等 要针对硬件的一些指标进行监控, 例如 CPU , 内存, 磁盘 等

Socket编程 (连接,发送消息) (Tcp、Udp) ,这个是同步,跟上一篇差不多

巧了我就是萌 提交于 2019-12-01 03:16:52
Socket编程 (连接,发送消息) (Tcp、Udp) 本篇文章主要实现Socket在Tcp\Udp协议下相互通讯的方式。(服务器端与客户端的通讯)   1.基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息。   使用Tcp协议通讯需要具备以下几个条件:     (1).建立一个套接字(Socket)     (2).绑定服务器端IP地址及端口号--服务器端     (3).利用Listen()方法开启监听--服务器端     (4).利用Accept()方法尝试与客户端建立一个连接--服务器端     (5).利用Connect()方法与服务器建立连接--客户端     (5).利用Send()方法向建立连接的主机发送消息     (6).利用Recive()方法接受来自建立连接的主机的消息(可靠连接)        2.基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低。至于可靠性,可通过应用层的控制来满足。(不可靠连接)     (1).建立一个套接字(Socket)     (2).绑定服务器端IP地址及端口号--服务器端     (3).通过SendTo()方法向指定主机发送消息(需提供主机IP地址及端口)     (4).通过ReciveFrom()方法接收指定主机发送的消息(需提供主机IP地址及端口)

分布式-- WebSocket 全双工通讯

久未见 提交于 2019-12-01 03:12:49
1. WebSocket 1). 背景 B/S结构的软件项目中有时客户端需要实时的获得服务器消息,但默认HTTP协议只支持请求响应模式,这样做可以简化Web服务器,减少服务器的负担,加快响应速度,因为服务器不需要与客户端长时间建立一个通信链接,但不容易直接完成实时的消息推送功能,如聊天室、后台信息提示、实时更新数据等功能,但通过polling、Long polling、长连接、Flash Socket以及HTML5中定义的WebSocket能完成该功能需要。 2). OSI 模型与 TCP/IP 下载 pdf 图1.png 3). Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket的英文原义是“孔”或“插座”,作为UNIX的进程通信机制。Socket可以实现应用程序间网络通信。 图2.png I. Socket可以使用TCP/IP协议或UDP协议。 TCP/IP协议 TCP/IP协议是目前应用最为广泛的协议,是构成Internet国际互联网协议的最为基础的协议,由TCP和IP协议组成: => TCP协议:面向连接的、可靠的、基于字节流的传输层通信协议,负责数据的可靠性传输的问题。 => IP协议:用于报文交换网络的一种面向数据的协议,主要负责给每台网络设备一个网络地址,保证数据传输到正确的目的地。 UDP协议

linux netlink通信机制简介

此生再无相见时 提交于 2019-11-30 12:23:32
一、什么是Netlink通信机制   Netlink套接字是用以实现 用户进程与内核进程 通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在Linux 内核中 使用netlink 进行应用与内核通信的应用很多; 包括:路由 daemon(NETLINK_ROUTE),用户态 socket 协议(NETLINK_USERSOCK), 防火墙(NETLINK_FIREWALL),netfilter 子系统(NETLINK_NETFILTER),内核事件向用户态通知(NETLINK_KOBJECT_UEVENT), 通用 netlink(NETLINK_GENERIC)等。 Netlink 是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就可以使用 netlink 提供的强大功能, 内核态需要使用专门的内核 API 来使用 netlink。 Netlink 相对于 系统调用 , ioctl 以及 /proc文件系统 而言具有以下优点: 1,netlink使用简单,只需要在include/linux/netlink.h中增加一个新类型的 netlink 协议定义即可,

laravel 5.8 实现消息推送

﹥>﹥吖頭↗ 提交于 2019-11-30 12:07:00
以下教程是基于5.6 的,在使用5.8实现时遇到一些问题,做一下记录 在我看来,实时通信才是 APP 应用的将来。 Socket 服务通常不是那么容易实现,但是 Laravel Echo 服务改变了这个情况。 在本文中,我将会简要的介绍如何建立一个可以运行的 Socket 服务并且在这个服务上进行事件的广播。( https://github.com/tlaverdure/laravel-echo... , Laravel 的支持文档: https://learnku.com/docs/laravel/5.6/broadcasting#... ) 它是完全免费的,你只要运行你自己的 Socket 服务。你也可以使用 Laravel 默认集成的 Pusher ,唯一的缺点是它是有限制的,如果超出限制则需要付费。我更喜欢自己来架构这些东西。 要求: Laravel 框架 (本教程使用了 5.6 版本) Redis 服务 基本的 Laravel 知识 安装 laravel-echo-server 首先我们需要全局安装 laravel-echo-server , 你只需在终端输入下面的命令。 $ npm install -g laravel-echo-server 安装完成后,打开你的 Laravel 应用,或者新启一个测试项目: $ composer create-project -

socket发送十六进制数据遇到0x00,后面的数据收不到

送分小仙女□ 提交于 2019-11-30 08:46:11
问题,使用socket发送数据时,char数组中遇到0x00处,后面的数据都不再发送,收到的数据从0x00处开始,后面都为0x00。 原因:在发送数据调用send函数之前,将要发送的数据拷贝到buf中,使用的字符串拷贝函数strcpy,strcpy(buf,recvbuf),使用此函数拷贝后,遇到0x00,就认为数据结束了,字符串结束了,后面的数据就不再发送,因此收到的数据,只要出现0x00之后的都为0x00。 解决:拷贝数据应使用memcpy。 memcpy(buf,recvbuf); 来源: CSDN 作者: 姿姿honey 链接: https://blog.csdn.net/qq_27819689/article/details/103217972

网络IO

﹥>﹥吖頭↗ 提交于 2019-11-30 02:42:13
大并发服务器框架 大并发服务器设计目标 高性能(High Performance). 要求编写出来的服务器能够最大限度发挥机器性能, 使得机器在满负荷的情况下能够处理尽可能多的并发请求, 对于大量并发请求能够及时快速做出响应 高可用(High Availability). 要求服务器7*24小时服务, 故障转移 伸缩性(Scalability). 服务器具有良好框架, 分层设计, 业务分离, 并且能够进行灵活部署 分布式: 负载均衡 分布式存储 分布式计算 C/S结构: 任何网络系统都可以抽象为C/S结构(客户端, 服务端) 网络I/O+服务器高性能编程技术+数据库 超出数据库连接数: 数据库并发连接数10个, 应用服务器这边有1000个并发请求, 将会有990个请求失败. 解决办法: 增加一个中间层DAL(数据库访问控制层), 一个队列进行排队 超出时限: 数据库并发连接数10个, 数据库1秒钟之内最能处理1000个请求, 应用服务器这边有10000个并发请求, 会出现0-10秒的等待. 如果系统规定响应时间5秒, 则该系统不能处理10000个并发请求, 这时数据库并发能力5000, 数据出现瓶颈. 数据库瓶颈缓解 提高数据库的并发能力 队列+连接池(DAL) 主要逻辑挪到应用服务器处理, 数据库只做辅助的业务处理. 在数据库上进行计算能力或处理处理逻辑不如操作系统效率高. --