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七层 ...
随机推荐
- Q&A in 2018 - Q2
How to zip a file for Windows? 压缩一个文件: makecab c:/file_name.txt c:/file_name.zip 解压一个文件: expand c:/f ...
- Docker实战部署JavaWeb项目-基于SpringBoot
最近在滴滴云上看到服务器很便宜,1核2G,1年只需要68块钱.下面是我基于Docker部署Javaweb服务的过程.目前我见过的最便宜的服务器,阿里云打折的时候都没有这么便宜啊,果断入手.有需要的话可 ...
- AOP配置步骤(XML)
1.maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...
- LOJ #2831. 「JOISC 2018 Day 1」道路建设 线段树+Link-cut-tree
用 LCT 维护颜色相同连通块,然后在线段树上查一下逆序对个数就可以了. code: #include <cstdio> #include <algorithm> #inclu ...
- CSS3之border-image的使用
最近,我在项目开发中遇到这样的问题. 要给这个tab的底部的蓝线左右加上圆角. 然而,这个元素实际如上图所示,只是active的时候加了个underline的类,蓝线并没有单独的html. 若给这个s ...
- Pikachu-Sql Inject(SQL注入)
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞.一个严重的SQL注入漏洞,可能会直接导致一家公司破产!SQL注入漏洞主要形成的原因 ...
- Parity game POJ - 1733 带权并查集
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; <& ...
- git pull报错you do not have permission to pull from the repository
you do not have permission to pull from the repository解决方法 使用git进行项目的版本管理,换了台电脑,配置了账号和邮箱后,pull一个项目 ...
- redis看这一篇就够了
redis的下载安装 准备相关依赖 yum install gcc 下载安装包 # 切换到存放安装包到目录 cd /usr/local # 下载安装包 wget http://download.red ...
- java学习笔记之反射—反射和工厂模式
简单工厂模式又称为静态工厂方法模式,它是由工厂对象来决定要创建哪一种类的实例化对象. 静态工厂代码: class Factory{ private Factory() {} public static ...