python中Socket知识点

一、客户端/服务端结构(C/S结构)

例如,我们的浏览器就是一个客户端,我们需要看的视频网站就是服务端。我们多个客户都可以去这个服务端看视频。

我们学习socket就是为了做c/s架构的开发。

二、OS五层协议

c/s结构的数据基本都是依赖于网络传输的,那么网络就是最基本的东西。

网络是什么?网络的核心就是由一堆协议组成,协议就是标准,比如全世界人通信的标准是英语。

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层。

图下图:

三、Socket是什么

Socket是一个抽象层,连接了应用层与传输层,是一组接口。

在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。

四、套接字的分类

套接字有两种(或者称为有两个种族),分别是基于文件型的和基于网络型的。

1.基于文件类型的套接字家族:AF_UNIX

基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一机器,可以通过访问同一个文件系统间接完成通信。

2.基于网络类型的套接字家族:AF_INET

五、套接字工作流程:

服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。

客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。

客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束

六、基于TCP的套接字

 1 # 服务端
 2
 3 import socket
 4
 5 phone = socket.scoket(socket.AF_INET,soket.SOCK_STREAM)  # 实例化一个套接字对象
 6 phone.bind((‘192.168.20.49‘,8080))  # 绑定ip地址及端口号
 7 phone.lisen(5)  # 开始TCP监听,最大连接数设置为5个,
 8
 9 con,c_address = phone.accept()  # 等到链接的到来,一旦有链接,则返回一个元祖,元祖的第一个元素是这个链接,第二个元素是这个客户端的ip跟端口号。
10
11 ret = con.recv(2014)  # 收到基于这次链接的数据,数据最大1024个字节;bytes类型
12
13 con.send(‘需要发送的信息’)    # 是bytes类型,
14
15 non.close()   # 先断开这次链接
16 phone.clsoe()  # 关闭这次套接字链接。
# 客户端

import socket

phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
phone.connect((‘192.168.20.49‘,8080))  # 发起一次链接,这个链接发送之后,服务端的phone.accept()处就会得到一个链接。

phone.send(‘‘)  # 发送信息,对应服务端的con.recv()  

phone.recv(1024)  # 接收服务端con.send的信息.

phone.close()

七、知识图

时间: 2024-08-10 23:30:50

python中Socket知识点的相关文章

Python中socket初次尝试

算了,选择了Python就一路走下去,管对还是错,既然选择了前方,就不要顾风雨兼程,今天看了Python的socket的编程,真实遇到了各种问题,防火墙,error 10054 ,10049 ,自己就在百度上各种搜索,最终还是出来了,bug调出来的那感觉只有自己最清楚.这些都是自己socket的时候,一些笔记: 1  .netstat -no 这个命令是察看端口的,并且可以通过pid察看是哪些程序在用这些端口! 2  在Python中或其它语言中,利用Socket编写服务器和客户端通信程序,经常

python 中socket.error: [Errno 10022]

在用python中的socket模块进行udp变成时 , 一直出现这个错误 下面先把错误代码贴出来 server: import socket import random,time s = socket.socket(socket.AF_INET , socket.SOCK_DGRAM) host = '127.0.0.1' port = 21567 addr = (host , port) if __name__ == '__main__': s.bind(addr) while True:

Python中socket编程

1.Socket介绍: Python中提供socket.py标准库,非常底层的接口库. Socket是一种通用的网络编程接口,和网络层次没有一一对应关系. 跨操作系统的.紧密结合tcp和udp来使用的. 接口简单,但是背后的原理不简单,ip加tcp,通过插两端.通过socket通道:连接程序. 建立关联. apc库. 加端口是因为应用程序太多了.绑定ip地址,作为假端口. 端口是由谁管理的 一般都是tcp和udp编程.Socket基本的,chatserver. 协议族:AF 表示address

python中socket模块

一.初识socket      socket 是网络连接端点,每个socket都被绑定到一个特定的IP地址和端口.IP地址是一个由4个数组成的序列,这4个数均是范围 0~255中的值(例如,220,176,36,76):端口数值的取值范围是0~65535.端口数小于1024的都是为众所周知的网络服务所保留的 (例如Web服务使用的80端口):最大的保留数被存储在socket模块的IPPORT_RESERVED变量中.你也可以为你的程序使用另外的端口数 值. 不是所有的IP地址都对世界的其它地方可

Python中socket经ssl加密后server开多线程

        前几天手撸Python socket代码,撸完之后经过ssl加密,确保数据的安全,外加server端开启多线程保证一个客户端连接有一个线程来服务客户端,走了不少的弯路,网上的信息啥的要么有ssl没有服务端的多线程,要不只有多线程没有加ssl加密,对于新手做这种需求还是有些困难的,这里,经过我!李帅帅的实践得出各种版本的代码以及最终终结版的代码,话说妇联4都他娘的药终结了,还有几天就上映了,说票挺贵的,这他娘的看个屁,大不了过半个月在啃,不知道黑寡妇最后咋样了,啧啧,挺好的一个姑娘

Python 中 socket 和 socketserver模块

Client/Server Architecture (CS架构) 说socket之前先说一点cs架构的问题.什么是CS架构? 不同的人对于这个问题有不同的回答以及你说的是硬件还是软件,但是无论哪一种情况都离不开一个前提假设:服务端是为一台或多台客服端提提供服务的硬件和软件的结合体.它存在的仅有的目的就是等待客服端的请求,对客服端提供反应,之后等待更多的请求. 客服端(client)为特殊的请求链接服务器,发送必要的数据,等待服务器回复,要么完成请求要么失败.服务端无限制的运行,不断的处理请求:

python中socket模块属性

数据属性 描述 AF_UNIX,AF_INET,AF_INET6 python支持的套接字家族 SOCK_STREAM,SOCK_DGRAM 套接字类型(TCP=流,UDP=数据报) has_ipv6 表示是否支持IPv6的标志变量 异常 描述 error 套接字相关错误 herror 主机和地址相关错误 gaierror 地址相关错误 timeout 超时 函数 描述 socket() 创建一个套接字对象 socketpair() 创建一对套接字 fromfd() 用一个已打开的文件描述符创建

python中socket、进程、线程、协程、池的创建方式

一.TCP-socket 服务端: import socket tcp_sk = socket.socket() tcp_sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) tcp_sk.bind(('127.0.0.1',8000)) tcp_sk.listen() conn,addr = tcp_sk.accept() conn.send('你好'.encode('utf-8')) print(conn.recv(1024).deco

Python中的socket如何使用?

本文和大家分享的主要是python 中socket相关内容,一起来看看吧,希望对大家 学习python有所帮助. 一. socket模块 socket ,俗称套接字,其实就是一个 ip 地址和端口的组合.类似于这样的形式 (ip,  port), 其中 ip 代表的是某个主机, port 代表的是某个应用,我们可以通过 socket 和另外的一台主机进行通信. 关于socket 源码的解析在 tarnado 系列文章中,正在写中..... 1. 通信的方式 tcp 通信 udp 通信 基于uni