首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python之本地web服务器搭建

作为服务器,就是收到客户端的请求,发送数据。其实前面我已经做了几个服务器的例子,只是知其然,不知其所以然。虽然确实实现了客户端和服务端的通信,可是好像和我平时真正访问互联网不一样。...为了使普通或者数据更加丰富,有一定格式,于是有了超文本标记语言这么一说。...平时当我们访问网络时,服务器返回的数据已网页形式展示,其实和我之前做的事差不多,只是数据格式不同(以前是纯文本,现在是html格式) 现在再次搭建一个本地服务器,返回的数据已静态的网页展示。...整个结构和前面的一样,只是返回数据那里有点区别。 一,第一步创建套接。...) #创建套接 server.bind(("",7788)) #绑定端口 server.listen(5) #设置监听 第二步,创建新的套接给多线程。

2.3K20

Python网络编程之Socket通信简单实现(文末赠书)

TCP通信流程 客户端流程 初始化socket() 使用ip和端口号connect()连接服务器 使用recv()接收数据,send()发送数据服务器进行交互 关闭socket() 服务端流程 初始化...socket() 使用bind()绑定ip和端口号 使用listen()监听消息 获取客户端套接地址accept() 使用recv()接收数据,send()发送数据客户端进行交互 关闭socket...,连接后返回客户端地址 send(data) 发送数据,data 是二进制数据 recv(buffer) 表示接收数据, buffersize 是每次接收数据的长度 close() 关闭套接连接 connect...((hostname, port)) 设置要连接的主机名称与端口号 使用Python实现TCP通信代码: 服务器端: import socket # 创建一个socket对象,默认TCP套接 s =...# 不断发送和接收数据 while 1: send_data = input("客户端发送的信息:") # socket传递的都是bytes类型的数据,需要转换一下 s1.send

4.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

【Java 网络编程】Socket TCP UDP 联系

( 对应物理层的光电信号传输 ) , B 收到后 , 拆开快递 , 拿到物品 ; 该操作类似于 OSI 的七层网络模型发送数据信息 ; 发送信息的 A 不需要了解具体的物流过程 , 只需要将物品准备好即可...Socket 是对 TCP/IP 协议的实现 , 具体指的就是 Socket 相关的 API , 包括流套接 ( Stream Socket ) 和数据套接 ( Datagram Socket )...服务器客户端 Socket 连接元素 : 在一个客户端服务器的 Socket 连接中 , 涉及到了 ① 服务器 IP 地址 , ② 服务器端口号 , ③ 客户端 IP 地址 , ④ 客户端端口号 ;...TCP 与 UDP 传输区别 : TCP 数据发送数据到另一端 , 必有一个反馈结果 , 或者成功 , 或者失败 ; UDP 发送数据 , 不管结果 , 只负责发送 , 不负责送达 ; VI CS 应用模型...---- CS 应用模型 ( Client-Server Application ) : TCP/IP 协议的通信 , 主要使用的模型就是 CS 模型 , Server 和 Client 分别对应服务器端和客户端的两个进程

36610

超详细的Socket通信原理和实例讲解

只有容器并没有实际作用,所以你还需要向容器中放入控制信息;如果你不申请创建套接所需要的内存空间,你创建的控制信息也没有地方存放,所以分配内存空间,放入控制信息缺一不可。...套接刚刚创建完成后,还没有数据,也不知道通信对象。在这种状态下,即使你让客户端应用程序委托协议栈发送数据,它也不知道发送到哪里。...在服务器上,与客户端一样也需要创建套接,但是同样的它也不知道通信对象是谁,所以我们需要让客户端服务器告知客户端的必要信息:IP 地址和端口号。...,之后通过网络介质传递给服务器服务器上会对帧头、IP 模块、TCP 模块的报文头进行解析,从而找到对应的套接套接收到请求后,会写入相应的信息,并且把状态改为正在连接。...我们以服务器断开连接为例,服务器发起断开连接请求,协议栈会生成断开连接的 TCP 头部,其实就是设置 FIN 位,然后委托 IP 模块向客户端发送数据,与此同时,服务器套接会记录下断开连接的相关信息

1.4K20

收发数据的原理(上)

上一篇五分钟了解网络连接讲了网络连接的大概流程,并且文末讲到客户端委托协议栈收发数据可以总结为四步: 1、创建套接(创建套接阶段) 2、将管道连接到服务器端的套接上(连接阶段) 3、收发数据...,也就是说,客户端套接知道了连接服务器的哪个套接。...IP模块执行网络包发送操作后,网络包就会通过网络发送服务器的IP模块,再由服务器的IP模块把接收到的数据传给服务器自身的TCP模块,这时,服务器的TCP模块会根据TCP头部的信息找到端口号对应的套接...,然后套接就会写入相应的信息,并把状态改成正在连接。...其实还剩下一个步骤,客户端收到数据后,也要像服务器那样把把ACK设置为1,并发回给服务器,告诉服务器,我已经收到服务器发来的响应包,当服务器收到这个返回包后,连接操作才算全部完成。

76220

前端-最经典的面试题之一,你能答出什么幺蛾子?

,浏览器存储起来,这个描述符是套接的 ID,用于识别套接,原因是同一个客户端可能跟很多服务器同时连接; 客户端套接与服务端的套接进行连接,连接成功后,协议栈将目标服务器的 IP 地址和端口号保存在套接中...,下面就可以收发数据发送数据是 HTTP 请求消息,发送的过程是:浏览器通过描述符查找到指定的套接,并向套接发送数据数据便会通过网络传输到服务端的套接服务器接收到消息后处理然后返回响应消息...之后,操作系统断开套接连接,本地的套接也会被删除。 TCP 连接 在“委托协议栈发送消息”部分简单地提了下客户端和服务端利用套接进行连接,那这个连接具体是什么样的呢? 首先什么是套接?...套接则会写入相应的信息,然后将状态改为“正在连接”; 服务端的 TCP 模块收到连接请求后就要回应,与客户端一样, 需要在 TCP 头部设置发送方和接收方的端口号,以及将 SYN 设为 1,同时,返回响应时还要将...; 服务器收到 FIN 为 1 的 TCP 头部时,协议栈将套接记录为进入断开操作状态,同时向客户端发送一个 ACK 号,告诉客户端已经收到消息; 服务器收到断开连接信息时,可能还有数据没有传完,所以等待数据全部传输结束后

50430

Unity【Multiplayer 多人在线】- Socket 通用客户端网络模块(一)、Connect 连接服务端

目录如下,链接为对应的CSDN博客地址: 一、通用服务端框架 (一)、定义套接和多路复用 https://blog.csdn.net/qq_42139931/article/details/124051945...offset + 2, l); return name; } } } Connect 连接服务端: 创建网络管理类NetworkManager,定义Socket套接...namespace SK.Framework.Sockets { public class NetworkManager : MonoBehaviour { //定义套接...Nagle 算法旨在通过使套接缓冲小数据包,然后在特定情况下将它们合并并发送到一个数据包,从而减少网络流量。TCP 数据包包含40节的标头以及要发送数据。...如果在连接上以前传输的数据保持未确认的情况,则 Nagle 算法将禁止发送新的 TCP 段。

92020

python之web服务器

这个服务器的负担就少了很多,只需要写相应的代码即可,这里(ver0.4)不同的是0.4的版本中,一个响应是一个html或者py文件.这个版本中客户端请求都用一个文件编写,一个请求对应一个类,具体请求信息对应相应的函数...而且网页的展示也是只需要将拿到的数据进行渲染就可以返回给服务器服务器在返回给客户端。一个框架就出来了,各司其职。 这样说可能没什么概念,好像只要我自己懂了,还是把代码写出来吧。...sys def newsocket_(newsockets,ip_port): #第三步,新的套接生成。...join() threadchild2.join() def main(): sersocket = socket(AF_INET, SOCK_STREAM) #第一步创建套接...,创建新的套接,分配一个线程,监听套接继续等待 if __name__ == '__main__': main() 运行结果: ver-0.2 (这个版本,整个网页都是在服务代码中构造)

2.6K20

【Java】基础45:网络编程代码演练

二、客户端代码 创建一个客户端类:TcpClient ? ①客户端套接 什么叫套接? 就是IP+端口,在Java里面它就对应了一个类,叫Socket,也叫套接。...①服务端套接 指定服务端的端口,IP也就是当前主机。 客户端要想访问这个服务端,那它填写的套接要和服务端这儿的端口保持一致。 如果是两台电脑,我这台是服务端,另一台是客户端。...socket就是服务端和客户端之间沟通的一个桥梁。 无论是读数据还是写数据都是基于socket的。 小时候玩过传声筒的小伙伴应该知道:两个人拿着传声筒,拉很远,讲话也能听到。...③服务端响应客户端(第二次握手) 接到客户端的信息后,服务端要再次向客户端发送信息。...其中服务端中accept方法是一个阻塞方法: accept,接受的意思,就是接受客户端的请求。 如果客户端一直不向服务端发起请求,服务端就一直等,这样的话后面的代码都不会运行。

44710

Linux| |对于UDP的学习

结构的长度 3.2 函数的作用 用来接收从socket套接发送来的消息。...,而绑定端口号是为了绑定一个进程,是为了对于客户端进行发送消息到服务器的时候,可以找到服务器 然后就接受客户端发来的消息 对于客户端的消息进行处理然后就可以再次将处理后的消息进行返回 插图:服务器流程...客户端 绑定一个套接 为了绑定一个进程,可以和服务器进行通信,将消息发送过去的时候要让服务器知道是哪一个进程再和他进程通信 客户端只需要向服务器发送消息 然后再次从客户端接收消息就好了,不需要考虑要进行连接...插图:客户端流程 实现处于同一局域网下的不同主机间进行通信 服务器 和本地通信的一致,只是对于套接绑定的ip地址不一样了 也对于套接要绑定该局域网的ip地址以及一个端口号,不需要在绑定本地地址(127.0.0.1...ip地址和端口号,这个ip地址和端口号也就是要知道客户端发送消息给哪一个服务器进行发送 启动服务器 必须要给服务器绑定一个ip地址和端口号,也就是要注意该服务器处于该计算机上的哪一个进程上

2.8K20

Linux| |对于UDP的学习

结构的长度 3.2 函数的作用 用来接收从socket套接发送来的消息。...实现本地通信 服务器 只需要服务器创建一个套接 使该套接对于本地地址(127.0.0.1)进行绑定,并且绑定一个端口号(1024–65535)就行了 绑定本地地址是为了对于本地计算机的两个进程进程通信...,而绑定端口号是为了绑定一个进程,是为了对于客户端进行发送消息到服务器的时候,可以找到服务器 然后就接受客户端发来的消息 对于客户端的消息进行处理然后就可以再次将处理后的消息进行返回 插图:服务器流程...客户端 绑定一个套接 为了绑定一个进程,可以和服务器进行通信,将消息发送过去的时候要让服务器知道是哪一个进程再和他进程通信 客户端只需要向服务器发送消息 然后再次从客户端接收消息就好了,不需要考虑要进行连接...插图:客户端流程 实现处于同一局域网下的不同主机间进行通信 服务器 和本地通信的一致,只是对于套接绑定的ip地址不一样了 也对于套接要绑定该局域网的ip地址以及一个端口号,不需要在绑定本地地址(127.0.0.1

3.1K30

C语言实现简易Linux终端版本聊天室

(5)调用send和recv用来在已连接的套接口间进行发送和接收数据。 二、创建客户端流程 (1)调用socket函数创建一个套接口,并返回描述符。...(2)调用connect向服务器发送连接请求,返回一个已连接的套接口。 (3)调用send和recv在已连接的套接口间发送和接收数据。 ?...1.1服务器将要完成的工作 (1)获取套接 (2)设置端口复用 (3)绑定连接的IP还有端口号 (4)监听 (5)创建一条线程用于显示客户端连接信息,具体连接的人数,顺便将客户连接的IP以及端口号打印出来...在47服务器上的客户端发送一条消息给56服务器上的客户端,同样的在56服务器上的客户端发送一条信息给47的服务器上的客户端,观察变化,如图4-5-18所示。 ?...在这里我们看到,56服务器上的客户端发送hello world的消息给47服务器上的客户端,47服务器上的客户端也收到了helloworld消息,同样的,47服务器上的客户端给56服务器上的客户端发送I

4.5K20

这篇文章带你读懂Socket,让你知道什么是Socket?

; 5)Socket 是如何断开连接的; 6)Socket 套接的删除等。...上面的描叙不够形象具体,这里借用一张别人的动图  当所有建立连接的报文都能够正常收发之后,此时套接就已经进入可收发状态了,此时可以认为用一根管理把两个套接连接了起来。...在这种情况下,即使数据长度没有到达 MSS,也应该把数据发送出去。 协议栈并没有告诉我们怎样平衡这两个因素,如果数据长度优先,那么效率有可能比较低;如果时间优先,那又会降低网络的效率。...服务器会对客户端发送过来的数据包进行确认,确认无误之后,服务器会生成一个序号和确认号(ACK)并一起发送客户端客户端确认之后再发送确认号给服务器。...等到服务器数据发送完成后,协议栈会通知客户端应用程序数据已经接收完毕。

42410

【传输层】概述、复用分用、UDP详解、UDP校验

套接------Socket---IP:端口号 UDP协议---无连接、不可靠---再IP数据报上加复用分用和差错检测-------面向报文------保留整个应用层的报文----传输层一次发送一个完整的应用层报文...0,------分用的时候,找不到对应的目的端口号就丢弃保温并给发送方ICMP UDP校验-----伪首部-不向上上传也不往下传------伪首部只有在计算校验和的时候才出现--------伪IP首部-...端口------传输层的SAP 端口号长度--------------16bit 客户端使用端口号-------仅在应用使用的时候动态选择-------49152以后的 套接------Socket—IP...:端口号 UDP协议—无连接、不可靠—再IP数据报上加复用分用和差错检测-------面向报文------保留整个应用层的报文----传输层一次发送一个完整的应用层报文------------防止分片...,找不到对应的目的端口号就丢弃保温并给发送方ICMP UDP校验-----伪首部-不向上上传也不往下传------伪首部只有在计算校验和的时候才出现--------伪IP首部--------17表示使用

92720

网络是怎样连接的 第一、二章 笔记

web_p46.jpg 管道的生命周期是这样的: 1.服务器创建套接,等待客户端向该套接连接管道 (创建套接阶段) 2.客户端创建一个套接,连接到服务器套接上 (连接阶段) 3.收发数据 (...,应该主动执行断开操作 因此服务器会首先调用close来断开连接,断开操作传达到客户端之后,客户端套接也会进入断开阶段 接下来,浏览器调用read执行接受数据操作时,read会告知浏览器收发数据操作已结束...模块根据TCP头部中的信息找到端口号对应的套接 找到套接字后,套接中会写入相应的信息,并将状态改为正在连接 上述操作完成后,服务器TCP模块会返回响应,这个过程和客户端一样,需要在TCP头部中设置发送方和接收方以及...FIN位为1的TCP头部时,客户端的协议栈会将自己的套接标记为进入断开操作状态 然后,未告知服务器已收到FIN位为1的包,客户端会向服务器返回一个ACK号 注:客户端的应用程序可能在收到FIN包之前就来读取数据...来结束数据收发操作,客户端也会像服务器一样发送一个FIN位为1的包,然后服务器会返回一个ACK号给客户端 之后,服务器客户端的通信就全部结束了 web_p91.jpg 删除套接服务器的通信结束之后

75410

Python3快速入门(十)——Pyth

socket.send(buf):发送TCP数据,将buf中的数据发送到连接的套接。返回要发送的字节数量,可能小于buf的字节大小。 socket.sendall(buf):发送TCP数据。...将buf中的数据发送到连接的套接,但在返回前会尝试发送所有数据。成功返回None,失败则抛出异常。...data,addr = socket.recvfrom(bufsize):从套接接收数据返回(data,address)。data是接收数据的缓冲区,address是发送数据套接地址。...6、调用rev接收来自客户端数据,调用send向客户端发送数据。 7、与客户端通信结束,服务器端可以调用close。...2、调用connect()函数将套接连接到服务器。 3、调用send()函数向服务器发送数据,调用recv()函数接收来自服务器数据

1.1K20

Python Socket 编程详细介绍(转)

服务器客户端不能直接发送列表,元素,字典等带有数据类型的格式,发送的内容必须是字符串数据。...完整发送TCP数据,将字符串中的数据发送到链接的套接,但在返回之前尝试发送所有数据。...成功返回None,失败则抛出异常 s.recvfrom(bufsize[, flag]) 接受UDP套接数据u,与recv()类似,返回值是tuple(data, address)。...其中data是包含接受数据的字符串,address是发送数据套接地址 s.sendto(string[, flag], address) 发送UDP数据,将数据发送套接,address形式为tuple...,并且发送给对方发送数据 s.recv() s.sendall() 5、传输完毕后,关闭套接 s.close() TCP 客户端 1、创建套接并链接至远端地址 s = socket.socket(socket.AF_INET

3.8K20
领券