Python网络编程笔记一
AF_INET:IPV4
AF_INET6:IPV6
套接字类型:
SOCK_STREAM:TCP
SOCK_DGRAM:UDP
创建TCP套接字,也可以不传递参数,默认创建TCP套接字
tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
下面是基于python3实现的简单的TCP服务端和客户端
TCP使用send、recv发送和接收数据
服务端:
import socket HOST = "127.0.0.1"
PORT = 9999
BUFFSIZE = 1024
ADDR = (HOST, PORT) tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcpSocket.bind(ADDR) tcpSocket.listen(5) while True:
print("watting clien connection...")
tcpClienSock, addr = tcpSocket.accept()
print("connected from:", addr)
while True:
data = tcpClienSock.recv(BUFFSIZE)
if not data:
break
print("i have received data: ", data)
sendData = "hello, i have received your date: %s" % data
tcpClienSock.send(bytes(sendData, encoding="utf-8"))
tcpClienSock.close()
tcpSocket.close()
客户端:
import socket HOST = "127.0.0.1"
PORT = 9999
BUFFSIZE = 1024
ADDR = (HOST, PORT) tcpClientSock = socket.socket()
r = tcpClientSock.connect(ADDR)
print(r) while True:
data = input(">>")
if data == "q" or data == "quit":
break
tcpClientSock.send(bytes(data, encoding="utf-8"))
recvData = tcpClientSock.recv(BUFFSIZE)
if not recvData:
break
print(recvData)
tcpClientSock.close()
接下来是简单的UDP服务器和客户端实现
UDP使用sendto、recvfrom发送和接收数据
UDP服务器:
import socket HOST = "127.0.0.1"
PORT = 9999
BUFFSIZE = 1024
ADDR = (HOST, PORT)
#UDP服务器创建套接字后,只需要绑定上IP和端口号,等待接收数据即可
#不需要listen和accept
udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSocket.bind(ADDR) while True:
print("watting message...")
data, addr = udpSocket.recvfrom(BUFFSIZE) #会返回发送者地址
sendData = "hello, i have recv your date: %s" % data
udpSocket.sendto(bytes(sendData, encoding="utf-8"), addr)
print("receive message %s from %s" % (data, addr))
udpSocket.close()
UDP客户端:
import socket HOST = "127.0.0.1" # 'localhost'也可以
PORT = 9999
BUFFSIZE = 1024
ADDR = (HOST, PORT)
#创建套接字即可发送数据,不需要connect连接
udpClientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while True:
data = input(">>")
if data == "q" or data == "quit":
break
udpClientSock.sendto(bytes(data, encoding="utf-8"), ADDR)
recvData, addr = udpClientSock.recvfrom(BUFFSIZE)
if not recvData:
break
print(recvData)
udpClientSock.close()
Python网络编程笔记一的更多相关文章
- Python网络编程笔记
01. UDP(user datagram protocol)用户数据报协议 01. 特点 01. 无连接 02. 不可靠 03. 每个被传输的数据报必须限定在64KB之内 02. 优点:效率高s 缺 ...
- Python网络编程笔记二
使用select模块实现IO多路复用服务端 import socket import select #windows上只支持select.select,不支持poll epoll HOST = &qu ...
- 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- python网络编程-01
python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...
随机推荐
- BZOJ 1934洛谷2057善意的投票题解
题目链接 BZ链接 又是一道玄学的网络流题 我们这样建图: 对于同意观点1的原点向其连边,对于同一观点2点向汇点连边 然后如果两个人是朋友,就连一条双向边. 为什么这样是对的呢? 对于一个人来说,他要 ...
- dva框架简单描述使用
首先传统的create-router-app脚手架生成的脚手架我们写仓库的时候用reducers进行调用还有thunk进行异步操作的时候,需要多层函数进行调用,这样会让我们代码进行维护的时候变得麻烦, ...
- Kubernetes1.4新特性前瞻:设置JOB执行计划
(一) 核心概念 Kubernetes在新版中会新增了一个设置JOB执行计划的功能,在1.3中已经可以初见端倪了,从进度上来看会在1.4版本中进行发布,下面我们先睹为快. Kubernetes通过这 ...
- Uva 10074【递推dp】
UVa 10074 题意:求01矩阵的最大子0矩阵. http://www.csie.ntnu.edu.tw/~u91029/MaximumSubarray.html#2 这里说的很清楚.先求Larg ...
- PHP header 的7种用法
这篇文章介绍的内容是关于PHP header()的7种用法 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 PHP header 的7种用法 1. 跳转页面 header('Locat ...
- python常量和变量
1.1 常量 常量是内存中用于保存固定值的单元,在程序中常量的值不能发生改变:python并没有命名常量,也就是说不能像C语言那样给常量起一个名字. python常量包括:数字.字符串.布尔值.空值: ...
- php 正则表达式怎么匹配标签里面的style?
$str = '<div style="margin:0px;text-align:left;padding:0px;">任意内容</div>'; $reg ...
- 项目中容易出现的BUG预警
之前没有记录BUG的习惯导致在同一个坑里边栽了好几次,于是将最近几个项目中遇到的问题整理一下,在进行新项目时预警一遍: 使用携带有搜索功能的分页查询时,注意当用户更改了查询条件但没有点击查询按钮直接点 ...
- 2018-5-28-win10-uwp-动态修改ListView元素布局
title author date CreateTime categories win10 uwp 动态修改ListView元素布局 lindexi 2018-05-28 15:15:54 +0800 ...
- Python--day19--os模块
os模块 os模块是与操作系统交互的一个接口 os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删 ...