python之socket编程(代码片段)

forever77 forever77     2022-12-16     578

关键词:

一、socket简介

socket(套接字)是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,将复杂的TCP/IP协议族隐藏在接口后面,让socket去组织数据以符合指定的协议。

 下图左为socket在tcp/ip协议中的角色,右为socket的工作流程。

技术图片    技术图片

 

 二、socket分类

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

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

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

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

还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个。python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候只使用AF_INET

三、基于TCP的socket

#server端
from socket import *
phone = socket(AF_INET,SOCK_STREAM)  #创建socket,第一个参数指定socket家族,第二个指定类型,SOCK_STREAM为tcp,SOCK_DGRAM为UDP
phone.bind((127.0.0.1,8000)) #socket绑定ip和端口,ip应该是本机地址
phone.listen(5)  #socket开启监听
conn,addr = phone.accept() #接收客户端连接
msg = conn.recv(1024)  #接收客户端消息
print(收到客户端的消息:,msg)
conn.send(msg.upper()) #向客户端发送消息
conn.close()  #关闭连接
phone.close()  #关闭socket
#client端
from socket import *
phone = socket(AF_INET,SOCK_STREAM)  #创建客户端socket
phone.connect((127.0.0.1,8000))  #socket连接服务端,ip为服务端地址
phone.send(hello.encode(utf-8))  #向服务端发送消息
msg = phone.recv(1025)   #接收服务端消息
print(收到服务端的消息,msg)
phone.close()  #关闭客户端socket

由于tcp是基于连接的,因此必须先启动服务端,然后再启动客户端去连接服务端。

由于socket是基于tcp/ip协议的,发送和接收消息必须是二进制数据。

 

python之socket网络编程(代码片段)

socket解释socekt又称为‘套接字’,用于描述IP和地址端口,是一个通信链路的句柄,应用程序通常通过套接字向网络发出请求或者应答网络请求。socket起源于Unix,所以也遵从“一切皆文件”的基本哲学,对于文件,... 查看详情

python之socket编程(代码片段)

一、软件开发架构C/S架构:客户端/服务端B/S架构:浏览器/服务端手机端:好像是c/s架构比较火,但是b/s架构正在逐步火起来目的:统一接口,聚集流量用户服务端:24小时不间断提供服务客户端:什么时候想体验服务,就去找服务端... 查看详情

python安全攻防之socket网络编程(代码片段)

一、网络结构体系1.OSI协议是由ISO(国际标准化组织)制定的,用于提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。OSI协议将网络体系结构划分为7层:应用层、表示层、会话层、传... 查看详情

python安全攻防之socket网络编程(代码片段)

一、网络结构体系1.OSI协议是由ISO(国际标准化组织)制定的,用于提供给开发者一个必须的、通用的概念以便开发完善、可以用来解释连接不同系统的框架。OSI协议将网络体系结构划分为7层:应用层、表示层、会话层、传... 查看详情

10.网络编程之socket(代码片段)

...连接的套接字2.1面向连接的套接字2.2无连接的套接字三、python中socket3.1socket()模块函数3.2套接字对象(内置)方法3.3Socket中的一些参数四、基于TCP的socket4.1创建TCP服务器4.2创建TCP客户端五、基于UDP的socket5.1创建UDP服务器5.2 查看详情

网络编程之socket编程(代码片段)

套接字介绍socket介绍Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket... 查看详情

socket编程之多客服端(简易版)(代码片段)

服务端:#!/usr/bin/envpython#-*-coding:utf-8-*-importsocketimportsyssk=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sk.bind((‘127.0.0.1‘,8080))sk.listen(5)whileTrue:#让服务端不停接受客户端print("开始接受请求!")conn,add 查看详情

听首歌的时间,简单复习下python网络编程之socket,美不美?滚雪球学python第4季14篇(代码片段)

在python中有两个不同层级的网络编程API,分别如下所示:基于socket的网络编程,较低层,采用TCP/UDP协议;基于url的网络编程,较高层,采用HTTP/HTTPS协议。如果想要系统的研究网络知识,需要掌握的... 查看详情

java之socket编程(bio)(代码片段)

效果展示原理分析BIO:即阻塞型IO操作因为我们的代码中有阻塞操作的api-》accept()、read()代码展示packageBIO;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.A 查看详情

网络编程之socket(代码片段)

...现并发网络编程的作业 一为什么要学习socket首先我们python基础部分已经学完了,而socket是我们基础进阶的课程,也就是说,你自己现在完全可以写一些小程序了,但是前面的学习和练习,我们写的代码都是在自己的电脑上运... 查看详情

网络编程之黏包(代码片段)

黏包现象基于tcp协议实现的黏包fromsocketimport*importsubprocessip_port=(‘127.0.0.1‘,8888)BUFSIZE=1024tcp_socket_server=socket(AF_INET,SOCK_STREAM)tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)tcp_socket_se 查看详情

网络编程-socket(代码片段)

网络编程之socket一、为什么要学习socket  首先我们python基础部分已经学完,而socket是我们基础进阶的课程,也就是说,你已经可以写一点小程序了,socket就是网络通信的工具,任何一门语言都有socket,他不是任何语言的专有名... 查看详情

java之socket编程(nio)(代码片段)

效果展示原理分析NIO:非阻塞型IO自从jdk1.4之后,增加了nio库,支持非阻塞型IO操作代码展示packageNIO;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.ServerSocketChannel;importjava.nio.channe 查看详情

linux--网络编程之socket(代码片段)

...转换成网络字节序4.2网络字节序转换成主机字节序五.udpsocket编程流程5.1编程流程示意图 5.2编程流程5.2.1创建套接字5.2.2绑定地址信息5.2.3UDP发送数据5.3UDP的发送和接收缓冲区六.tcpsocket编程6.1编程流程示意图6.3编程接口6.3.1监听接... 查看详情

socket编程之使用fsockopen()函数(代码片段)

fsockopen函数:初始化一个套接字连接到指定主机(hostname)get方式:client.php1<?php2//创建连接3$fp=fsockopen(‘localhost‘,80,$error,$errstr,10);45//检测6if(!$fp)7echo$errstr;die;8910//拼接http请求报文11$http=‘‘;1213//请求报文包括3部分请求行请... 查看详情

网络编程基础之粘包现象(代码片段)

...py 1#!/usr/bin/envpython32#-*-coding:utf-8-*-3#writebycongcong456importsocket78server=socket.socket(family=socket.AF_INET,type=socket.SOC 查看详情

python的socket编程(代码片段)

  socket主要用于长连接 简单DEMO:Server端:importsocketserver=socket.socket(socket.AF_INET,socket.SOCK_STREAM)server.bind((‘0.0.0.0‘,8000))server.listen()sock,addr=server.accept()#获取从客户端发送的数据data=s 查看详情

[linux]linux网络之socket编程入门(代码片段)

...机的发送数据的流向2.4IP和MAC地址2.5端口2.6网络字节序3.SocketAPI3.1公共接口3.2UDP接收发送数据3.3.TCP部分4.UDP及TCP的通信程序4.1UDP4.2TCP1.前言本文主要是介绍socket编程的一些接口函数,不会涉及协议的特性等等 查看详情