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. Java练习 SDUT-2728_最佳拟合直线

    最佳拟合直线 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在很多情况下,天文观测得到的数据是一组包含很大数量的序列点 ...

  2. 因为对 Docker 不熟悉建了 N 多个 Nginx

    因为对 Docker 不熟悉建了 N 多个 Nginx 一直不停的 docker run nginx 结果出现无数个 nginx. 然后最原来的 nginx 启动不了了. 使用 docker ps - ...

  3. svn总结 标签: svn开源软件 2015-05-09 17:31 513人阅读 评论(11) 收藏

    说到SVN,就不得不说CVS,CVS 是一个C/S系统,是一个常用的代码版本控制软件.主要在开源软件管理中使用.与它相类似的代码版本控制软件有subversion.多个开发人员通过一个中心版本控制系统 ...

  4. oracle函数 sqrt(x)

    [功能]返回x的平方根 [参数]x数字型表达式 [返回]数字 [示例] select sqrt(64),sqrt(10) from dual; 返回:8 , 3.16227766

  5. Python基础:23异常

    一:概述 1:错误 错误有语法和逻辑上的区别.语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译.这些错误必须在程序执行前纠正.逻辑错误可能是由于不完整或是不合法的输入所致,还可能是 ...

  6. 网站域名加WWW与不加WWW区别

    不知道站长童鞋们有没有注意到,很多网站在打开时,地址栏里的域名有的带有“www.”,而有的网站前面则没有带“www.”这其中有什么区别呢?作为一个新站长,我什么都不懂,就在百度上搜了一艘,也没找到一个 ...

  7. 让 AE 输出 MPEG

    最近在做视频后期处理,但是我发现 AE 的文件都很大,大概一个 10 分钟视频 10G ,所以有什么办法让他输出的文件变小?一个方法是使用 MPEG 输出. 本文告诉大家如何让 AE 输出 MPEG ...

  8. :after选择器-----分割线

    分割线: 让span中的文字覆盖分割线,需要:给div和span设置同样的background-color,并且给span设置z-index. 接下来就是margin和padding的调整了. 效果: ...

  9. 2019-11-13-如何在国内发布-UWP-应用

    title author date CreateTime categories 如何在国内发布 UWP 应用 lindexi 2019-11-13 08:46:44 +0800 2019-02-17 ...

  10. laravel 学习笔记blog后台

    https://github.com/almasaeed2010/adminlte composer require "almasaeed2010/adminlte=~2.0"