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是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...
随机推荐
- HZOJ string
正解炸了…… 考试的时候想到了正解,非常高兴的打出来了线段树,又调了好长时间,对拍了一下发现除了非常大的点跑的有点慢外其他还行.因为复杂度算着有点高…… 最后正解死于常数太大……旁边的lyl用同样的算 ...
- Android教程 -08 ToolBar的使用和主题的介绍
ActionBar 简介 视频为本篇播客知识点讲解,建议采用超清模式观看, 欢迎点击订阅我的优酷 讲解ToolBar之前首先需要了解 ActionBar, 两者使用起来基本上一致. Android 3 ...
- C++第5次作业
运算符重载 定义 - 运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同行为. 运算符重载规则 - C++运算符除了少数几个,全都可以重载,且只能重载C++已有的运算 ...
- MVC4 变更模板
模板位置: C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4 ...
- Porject Euler Problem 6-Sum square difference
我的做法就是暴力,1+...+n 用前n项和公式就行 1^2+2^2+....+n^2就暴力了 做完后在讨论版发现两个有趣的东西. 一个是 (1+2+3+...+n)^2=(1^3)+(2^3)+(3 ...
- Python--day70--ORM一对一表结构
ORM一对一表结构:
- Python--day67--Jsonresponse响应介绍和路由系统的分组命名匹配方式(简单介绍)
1,Jsonresponse响应介绍: ,2,路由系统的分组命名匹配方式:(简单介绍)
- uni-app学习记录03-路由跳转
<template> <view class="content"> <!-- v-show是相对于display: none --> <v ...
- [转]在eclipse中,用maven创建一个web项目工程
1.在eclipse中用maven创建项目,右键new>>Maven Project 2.点击next继续 3.点击next继续,选择maven-archetype-webapp, 4.点 ...
- UVA 1343 - The Rotation Game-[IDA*迭代加深搜索]
解题思路: 这是紫书上的一道题,一开始笔者按照书上的思路采用状态空间搜索,想了很多办法优化可是仍然超时,时间消耗大的原因是主要是: 1)状态转移代价很大,一次需要向八个方向寻找: 2)哈希表更新频繁: ...