python | 网络编程(socket、udp、tcp)
一、套接字 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)的更多相关文章
- python网络编程(Socket、TCP、UDP)
Socket 是网络编程的一个抽象概念,通常我们用一个Socket表示 "打开了一个网络链接",而打开一个Socket 需要知道目标计算机的IP 地址和端口号,再指定协议类型即可. ...
- Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型
Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- 网络编程Socket之TCP之close/shutdown具体解释(续)
接着上一篇网络编程Socket之TCP之close/shutdown具体解释 如今我们看看对于不同情况的close的返回情况和可能遇到的一些问题: 1.默认操作的close 说明:我们已经知道writ ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- python网络编程socket编程(TCP、UDP客户端服务器)
摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...
- IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类
一.TCP socket ipv6与ipv4的区别 服务器端源代码如下: #include <stdio.h> #include <stdlib.h> #include < ...
- python网络编程--socket,网络协议,TCP
一. 客户端/服务端架构(用到网络通信的地方) 我们使用qq.微信和别人聊天,通过浏览器来浏览页面.看京东的网站,通过优酷.快播(此处只是怀念一下)看片片啥的等等,通过无线打印机来打印一个word文档 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
随机推荐
- vue及vant框架,多语言配置
1.安装 vue-i18n,( cnpm install vue-i18n --save ) 2.在入口,main.js 中引入 (import Vuei18n from "vue-i18n ...
- 前端开发神器 VSCode 使用总结
VSCode 是微软出品的,基于 Electron 和 TypeScript 的,集成了 git 版本管理和命令行终端,而且开源稳定,插件丰富,再搭配一款 Chrome 浏览器,可以说是前端开发神器了 ...
- C# MVC Api无法获得参数
在MVC中写API时,没有收到参数如何解决? 通过jQuery.POST测试成功.后来又通过F12发送,发现始终无法收到参数. 注:我的接口接收参数是一个类对象,没有写[FromBody]) [Htt ...
- kali2020更换中科大的更新源
kali2020更换中科大的更新源 中科大的源地址 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib deb ...
- WIN10与ubuntu双系统安装教程
按照网上博客的安装教程安装的Win10+Ubuntu16.04双系统安装了好几遍都不成功?启动Ubuntu左上一直有个光标在闪?如果你的电脑也是双硬盘(装Windows系统的固态硬盘+机械硬盘),在安 ...
- 查询MySQL DB
public DataTable ConnMySql(string strRegisterNo) { try { DataTable dt = new DataTable("table&qu ...
- JS DOM操作(创建、遍历、获取、操作、删除节点)
创建节点 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="u ...
- Java设计模式(一)UML总结
定义 统一建模语言(英语: Unified Modeling Language ,缩写UML)是非专利的第三代建模和规约语言. UML特点 UML是一种开放的方法 用于说明.可视化.构建和编写一个正在 ...
- 【JavaScript】JS总结 – 乱
一. 重要:js中的function函数声明.函数表达式 // 函数声明 // Ex: 会在代码执行之前提前加载到作用域中,即js解析器会优先读取,确保在所有代码执行之前声明已经被解析:所以可以在定义 ...
- vue 学习3
在 2.5.0 及以上版本中,如果你使用了单文件组件 $children,$slots,$attrs .... $attrs 可以透传props 注意.模板标签上有:属性="a", ...