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网络编程笔记一的更多相关文章

  1. Python网络编程笔记

    01. UDP(user datagram protocol)用户数据报协议 01. 特点 01. 无连接 02. 不可靠 03. 每个被传输的数据报必须限定在64KB之内 02. 优点:效率高s 缺 ...

  2. Python网络编程笔记二

    使用select模块实现IO多路复用服务端 import socket import select #windows上只支持select.select,不支持poll epoll HOST = &qu ...

  3. 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  4. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  5. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  6. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  7. Python学习(22)python网络编程

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

  8. Day07 - Python 网络编程 Socket

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

  9. python网络编程-01

    python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...

随机推荐

  1. 【Linux】根目录命名的意义

    1./bin :获得最小的系统可操作性所需要的命令2./boot :内核和加载内核所需的文件3./dev :终端.磁盘.调制解调器等的设备项4./etc :关键的启动文件和配置文件5./home :用 ...

  2. ELK之开心小爬爬

    1.开心小爬爬 在爬取之前需要先安装requests模块和BeautifulSoup这两个模块 ''' https://www.autohome.com.cn/all/ 爬取图片和链接 写入数据库里边 ...

  3. python生成器和各种推导式

    一. 生成器 本质就是迭代器. 一个一个的创建对象 创建生成器的方式: 1. 生成器函数 2. 通过生成器表达式来获取生成器 3. 类型转换(看不到) 二. 生成器函数 (重点) 生成器函数中包含 y ...

  4. ansible基础☞第一条命令

    我的两个测试机: 系统: ubuntu 16.04.2 ansible-master: 192.168.0.107 ansible-slave: 192.168.0.108 ansible版本: ro ...

  5. 洛谷 2149 [SDOI2009]Elaxia的路线

    题目描述 最近,Elaxia和w的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w每天都要奔波于宿舍和实验室之间,他们 希望在节约时间的 ...

  6. jQuery 练习 dom

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 2018-2-13-WPF-只允许打开一个实例

    title author date CreateTime categories WPF 只允许打开一个实例 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...

  8. c++第一次的个人作业

    循环结构是c++中重要的结构用以实现代码的反复使用 三种不同的循环结构以及嵌套是必须认识与能够使用的 三种循环结构分别是: 在for循环中可以在for后的括号内加入初始条件,循环条件与参数变化.使得整 ...

  9. 小程序clearinterval无效解决

    小程序clearinterval无效解决 小程序clearinterval清除定时器无效,原因是定时器使用与清除方法不对导致的,我们应将定时器绑定变量,这样在关闭页面清空定时器clearinterva ...

  10. JS 复制文本兼容移动端 iOS & android

    有几个需要注意的地方. 首先文本只有选中才可以复制,所以简单的做法就是创建一个隐藏的 input,然后绑定需要复制的文本. 另外如果将 input 设置为 `type="hidden&quo ...