一、套接字 socket

1.1 作用:实现不同主机间的进程间通信(不同电脑、手机等设备之间收发数据)

1.2 分类:udp、tcp

1.3 创建 socket

 import socket
socket.socket(AddressFamily, Type)

  AddressFamily:AF_INET:用于网络间进程通信;AF_UNIX:用于同一台机器中

  Type:SOCK_DGRAM:upd 协议使用;SOCK_STREAM:tcp 协议使用

二、upd socket

2.1 创建 udp socket,并使用其收发数据

 import socket

 # 创建 udp 套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本地信息,bind后面的()里一定要是个元组!!元组!!
udp_socket.bind(("", 7890)) # 获取要发送的内容
send_msg = input("请输入要发送的内容:") # 使用 udp 发送数据,
udp_socket.sendto(send_msg.encode("utf-8"), ("192.168.xxx.xxx", 9090)) # 接收数据,1204表示一次最多接收1024个字节
recv_data = udp_socket.recvfrom(1024)
recv_msg = recv_data[0] # 所接收的数据内容
recv_addr = recv_data[1] # 远程地址 # 打印远程发送来的信息
# 如果是从 windows 发来的数据要用 gbk解码
print(str(recv_addr) + ":" + recv_msg.decode("gbk")) udp_socket.close()

三、tcp socket

  tcp 套接字分为服务器和客户端

3.1 创建  socket,无论客户端和服务器都要写

1 import socket
2
3 # 创建 tcp 的套接字
4 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5
6 # 关闭套接字
7 tcp_socket.close()

 

3.2 创建 tcp 客户端 socket,并使用其收发数据

 import socket

 # 创建套接字
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器(!!!区分udp)
tcp_client_socket.connect(("192.168.0.102", 7891)) # 获取要发送的信息
send_msg = input("请输入要发送的信息:") # 发送信息
tcp_client_socket.send(send_msg.encode("utf-8")) # 接收返回来的数据
recv_msg = tcp_client_socket.recv(1024) tcp_client_socket.close()

3.3 创建 tcp 服务器 socket,并使用其收发数据即:(即:为客户端服务)

 import socket

 # 创建套接字
tcp_ser_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定本地信息
tcp_ser_socket.bind(("", 7890)) # 变为被动监听套接字(listen)
tcp_ser_socket.listen(128) # 等待客户端的链接(accept)
client_socket, client_addr = tcp_ser_socket.accept() # 为链接来的客户端服务,接收客户端发来的数据
recv_data = client_socket.recv(1024) # 返回数据给客户端,不用再写客户端的地址端口
# client_socket.send("hhhhhh".encode("utf-8"),client_addr)
client_socket.send("hhhhhh".encode("utf-8")) # 关闭套接字
client_socket.close() # 关闭服务器方打开的客户端的套接字
tcp_ser_socket.close() # 一般不关,关了怎么服务

挥手握手待补充

【本文仅作为学习笔记】

python | 网络编程(socket、udp、tcp)的更多相关文章

  1. python网络编程(Socket、TCP、UDP)

    Socket 是网络编程的一个抽象概念,通常我们用一个Socket表示 "打开了一个网络链接",而打开一个Socket 需要知道目标计算机的IP 地址和端口号,再指定协议类型即可. ...

  2. Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型

    Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...

  3. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅     1 TCP的开销 a ...

  4. 网络编程Socket之TCP之close/shutdown具体解释(续)

    接着上一篇网络编程Socket之TCP之close/shutdown具体解释 如今我们看看对于不同情况的close的返回情况和可能遇到的一些问题: 1.默认操作的close 说明:我们已经知道writ ...

  5. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  6. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  7. python网络编程socket编程(TCP、UDP客户端服务器)

    摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...

  8. IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类

    一.TCP socket ipv6与ipv4的区别 服务器端源代码如下: #include <stdio.h> #include <stdlib.h> #include < ...

  9. python网络编程--socket,网络协议,TCP

    一. 客户端/服务端架构(用到网络通信的地方) 我们使用qq.微信和别人聊天,通过浏览器来浏览页面.看京东的网站,通过优酷.快播(此处只是怀念一下)看片片啥的等等,通过无线打印机来打印一个word文档 ...

  10. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

随机推荐

  1. 解决 Windows 编译 Fast R-CNN 的 bbox 和 nms 出现的错误 error: Unable to find vcvarsall.bat

    在 Windows 下安装一个底层的 Python 包时(Fast R-CNN 的 bbox 和 nms),遇到 error: Unable to find vcvarsall.bat 错误,看到这个 ...

  2. Python爬虫连载9-JS加密之“盐”​、ajax请求

    一.JS加密之“盐”​ 1.salt属性“盐":多用于密码学,比如我们的银行卡是六位密码,但是实际上在银行的系统里,我们输入密码后,会给原始的密码添加若干字符,形成更加难以破解的密码.这个过 ...

  3. 剑指offer-拓展训练-N皇后的问题-全排列

    /* 题目: N皇后的问题. */ /* 思路: 全排列. 声明一个具有N个元素的数组curr,每个下标i(0>i>n)代表行,每个curr[i]代表列,所以初始化为curr[i] = i ...

  4. 打印机打印pdf文件特别慢怎么解决

    PDF等文件中都包含了一些或者很多光栅化数据(图片.嵌入的字体等).这些文件在打印时,打印机驱动程序都会在系统中生成大量EMF文件(增强型变换文件),小到1MB,大到500MB,过大的EMF临时文件会 ...

  5. Wannafly Winter Camp 2020 Day 5B Bitset Master - 时间倒流

    有 \(n\) 个点的树,给定 \(m\) 次操作,每个点对应一个集合,初态下只有自己. 第 \(i\) 次操作给定参数 \(p_i\),意为把 \(p_i\) 这条边的两个点的集合合并,并分别发配回 ...

  6. Java-跳跃路线

    题目: 小明参加了学校的趣味运动会,其中的一个项目是:跳格子.地上画着一些格子,每个格子里写一个字,如下所示: 从我做起振我做起振兴做起振兴中起振兴中华 比赛时,先站在左上角的写着“从”字的格子里,可 ...

  7. linux系统如何进行录屏

    linux系统如何录屏安装SimpleScreenRecorder 按Ctrl+ALt+T打开终端 添加源: sudo add-apt-repository ppa:maarten-baert/sim ...

  8. Java文件与类动手动脑

    动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOExcepti ...

  9. 小程序onShow事件获取options方法

    微信小程序 onShow() 事件 onShow() 事件不接受参数,因此无法获取页面 url 传递过来的参数,只有 onLoad() 事件可以. onShow(options){ console.l ...

  10. PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...