socket

网编并发数据库

半腔热情 提交于 2020-02-27 14:29:41
简述 OSI 7层模型及其作用?(2分) 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 简述 TCP三次握手、四次回收的流程。(3分) 三次握手是建立tcp连接的过程,客户端先发送SYN包到服务器,等待服务器确认,服务器收到SYN包,确认后返回客户端一个SYN包,客户端收到服务端的SYN包后向服务端返回ACK包,连接成功 四次挥手是tcp断开连接的过程,客户端发送断开连接报文,服务端收到断开连接报文后发出确认报文,客户端收到服务端的确认请求后,返回服务端确认报文,断开连接 TCP和UDP的区别?(3分) tcp 上传下载发邮件,可靠 面向连接 速度慢,传输的数据长度不限 udp 即时通讯工具 不可靠 面向数据报 传输的数据长度有限 什么是黏包?(2分) 黏包现象在发送端时,当两条消息发送时消息间隔时间短,长度短,两条消息就会拼在一起 黏包现象在接收端时,多条消息被一次接收,数据与数据之间没有边界 什么 B/S 和 C/S 架构?(2分) B/S架构 浏览器和服务端 节省资源不依赖环境 C/S架构 客户端和服务端 安全性强 程序比较庞大 请实现一个简单的socket编程(客户端和服务端可以进行收发消息)(3分) #fuwuduan import socket sk = socket.socket() sk.bind((‘127.0.0.1’,9000)) sk

从Socket编程到Http协议,了解Tomcat底层,实现自己的HTTP服务器。

吃可爱长大的小学妹 提交于 2020-02-27 14:28:24
上节我们知道Tomcat里面的server里的service里的connector的endpoint部分作用在传输层,processor部分作用在应用层。 Web服务器 本文将介绍 Java Web 服务器是如何运行的, Web 服务器也称为超文本传输协议( HyperText Transfer Protocol, HTTP)服务器, 因为它使用 Http 协议与其客户端(通常是 Web 浏览器)进行通信, 基于 Java 的 Web 服务器会使用两个重要的类: java.net.Socket 类和 java.net.ServerSocket 类, 并通过发送 Http 消息进行通信. 我们先花一些篇幅介绍 Http 协议(如果同学们熟悉HTTP协议可直接跳过)和这两个类, 然后写一个简单的 Web 服务器。 Http协议 Http : Http 允许 Web 服务器和浏览器通过因特网发送并接受数据, 是一种基于”请求-响应”的协议, 客户端请求一个文件, 服务器端对该请求进行响应.。Http 使用可靠的 tcp 连接, 服务端默认端口为80, http协议的第一个版本是 http/0.9, 后来被 http/1.0取代, 随后 http/1.0又被http/1.1取代, http/1.1 定义域 RFC2616中。 在 Http 中, 总是由客户端通过建立连接并发送 http

day02

*爱你&永不变心* 提交于 2020-02-27 12:49:01
Python面试重点(进阶篇) 注意:只有必答题部分计算分值,补充题不计算分值。 第一部分 必答题 简述 OSI 7层模型及其作用?(2分) 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层一般在开发中应用层 表示层 会话层会合并成应用层我们开发中的网络通信都是基于socket来完成的,它封装了传输层 网络层 数据链路层 物理层各层的功能大概包括 :​• 应用层 : 是计算机用户以及各种应用程序和网络之间的接口,直接向用户提供服务,完成用户所需的在网络上的各种工作 ,应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等​• 表示层 : 处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。​• 会话层 : 组织和协调两个会话进程之间的通信,并对数据交换进行管理。​• 传输层 : 接收上一层的数据,在必要时吧数据进行分割,并将这些数据交给网络层,且保证这些数据段有效到达对端​• 网络层 : 控制子网的运行,如逻辑编址、分组传输、路由选择​• 数据链路层 : 通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。 ​• 物理层 : 利用物理传输介质为数据链路层提供物理连接,实现比特流的传输 简述 TCP三次握手

Java学习-综合案列-文件上传

大城市里の小女人 提交于 2020-02-27 01:41:36
综合案例_文件上传的原理 综合案例_文件上传案例的客户端 import java . io . FileInputStream ; import java . io . IOException ; import java . io . InputStream ; import java . io . OutputStream ; import java . net . Socket ; /* 文件上传案例的客户端:读取本地文件,上传到服务器,读取服务器回写的数据 明确: 数据源:c:\\1.jpg 目的地:服务器 实现步骤: 1.创建一个本地字节输入流FileInputStream对象,构造方法中绑定要读取的数据源 2.创建一个客户端Socket对象,构造方法中绑定服务器的IP地址和端口号 3.使用Socket中的方法getOutputStream,获取网络字节输出流OutputStream对象 4.使用本地字节输入流FileInputStream对象中的方法read,读取本地文件 5.使用网络字节输出流OutputStream对象中的方法write,把读取到的文件上传到服务器 6.使用Socket中的方法getInputStream,获取网络字节输入流InputStream对象 7.使用网络字节输入流InputStream对象中的方法read读取服务回写的数据 8.释放资源

208Socket编程基础

心已入冬 提交于 2020-02-26 23:20:50
Socket接口模型 网络应用进程通信时需要通过API接口请求底层协议的服务。可以创建数据报类型套接字SOCK_DGRAM、流式套接字SOCK_STREAM、和原始套接字SOCK_RAW 基于TCP的Socket编程 基于UDP的Socket编程 来源: CSDN 作者: 刘桐ssss 链接: https://blog.csdn.net/Delicious_Life/article/details/104524262

TCP和Http的区别

こ雲淡風輕ζ 提交于 2020-02-26 16:29:52
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。 1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 握 手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写 了,就是服务器和客户端交互,最终确定断开) 2、HTTP连接 HTTP协议即超文本传送协议

mysql主从复制读写分离之——proxysql应用

北战南征 提交于 2020-02-26 16:04:24
一、说明 ProxySQL是一个开源的MySQL代理服务器,这意味着它充当MySQL服务器和访问其数据库的应用程序之间的中介。ProxySQL可以通过在多个数据库服务器池之间分配流量来提高性能,并且如果一个或多个数据库服务器发生故障,还可以通过自动故障切换到备用数据库来提高可用性。 系统环境:master1:ubuntu16.04 mysql5.6 192.168.1.10 3307 master2:ubuntu16.04 mysql5.6 192.168.1.20 3307 slave1: ubuntu16.04 mysql5.6 192.168.1.10 3308 slave2: ubuntu16.04 mysql5.6 192.168.1.10 3309 slave3: ubuntu16.04 mysql5.6 192.168.1.20 3308 slave4: ubuntu16.04 mysql5.6 192.168.1.20 3309 【proxysql】:ubuntu16.04 mysql 192.168.1.30 3306 master1与master2为双主双从模式。 主从复制前边文章和网上文章都特别详细。这里不做介绍。请参考https://blog.51cto.com/13120271/2140400。 第一步 - 安装ProxySQL

浅谈Java网络编程——非阻塞I/O

柔情痞子 提交于 2020-02-26 11:46:46
文件描述符(descriptors) Unix中I/O的基本组成元素是字节序列。大多数程序应用于字节流或I/O流。 进程通过描述符引用I/O流,也被称作文件描述符。管道、文件、POSIX IPC's(消息队列,信号量,共享内存),事件队列等都是通过文件描述符引用I/O流。 创建和释放描述符 描述符创建: 通过系统命令调用(open,pipe,socket等)创建; 继承自父进程。 描述符释放: 进程退出 系统调用 close 标记为 close on exec 的描述符在 exec 后释放 Close-on-exec 当进程 forks 时,所有描述符都会复制到子进程中。如果任意描述符被标记为 close on exec ,那么当子进程 execs 之前,父进程 forks 之后,这些描述符将关闭并且在子进程中不再可用。 使用描述符通过 read 、 write 命令调用的数据转换 File Entry 每个描述符都指向内核中的File entry的数据结构。file entry为每个描述符维度了一个file offset。系统调用命令 open 创建file entry. Fork/Dup and File Entries 由 fork 创建的描述符被父子进程共享,在file entry中引用同一个 offset 。 dup/dup2 的系统调用与此类似。 #include

认识网络(一)

你说的曾经没有我的故事 提交于 2020-02-26 03:29:30
网络 网络其实就是跨主机的“进程间”通信 协议分层 分层的意义:网络协议比较复杂,如果不拆分就会很复杂 分层的好处:拆分成多个模块相当于降低了整个系统的耦合程度,根据实际需要,随时可以替换其中的某一层协议 OSI七层模型: TCP/IP五层(或四层)模型 由图可见网络层和传输层都是由操作系统内核来实现的,我们所开发的程序就是调用这些内核提供的传输层系统调用(socket api)来完成应用层的程序。每一层都包含了不同的协议。 网络中的常见设备和协议的关系: 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容; 对于一台路由器, 它实现了从网络层到物理层; 对于一台交换机, 它实现了从数据链路层到物理层; 对于集线器, 它只实现了物理层; 上下层协议之间交互数据的时候两步:封装和分用(就相当于是包装快递和拆快递) 认识TCP和UDP协议 TCP: 传输层协议 有连接(打电话,必须双方同意通信) 可靠传输(知道数据是否发送成功,本质上靠对方的反馈) 面向字节流(发送数据和接收数据可以随意控制,非常灵活,水管的例子) UDP: 传输层协议 无连接(发qq,不需要双方同意通信) 不可靠传输(不知道数据是否发送成功) 面向数据报(一次发多少数据一次就要接多少,否则会造成数据的损失,对读写要求严格,读写一致) 网络字节序(大端序),统一转化为大端序再发送到网络上,主机字节序(不确定

c++ web服务器 转载

泪湿孤枕 提交于 2020-02-26 00:33:25
//***************************************************************************** //@ProjectName ZYhttpd //@Description my http server //@Author NicoleRobin //@Date 2015/02/09 //***************************************************************************** #include <cstdio> #include <WinSock2.h> using namespace std; #define BUFFER_SIZE 1024 #define HOST "127.0.0.1" #define PORT 81 #define HEADER "\ HTTP/1.1 200 OK\r\n\ Content-Type: text/html; charset=UTF-8\r\n\ Server: ZYhttp_v1.0.1\r\n\ Content-Length: %d\r\n\r\n%s\ " #define HTML "\ <html>\ <head>\ <title>ZYhttp</title>\ <head>\ <body>\ <h1