• 存在两类协议UDPTCP协议,前者是不安全的不面向链接的传输,速度快,后者是安全的面向链接的传输,速度慢。
  • 首先,必须明确服务器和客户端的区别
    • 在服务器端连接ip地址和端口唯一指定这个程序,接受访问,给与反馈,优秀的服务器永远不会停止运行。
    • 在客户端访问服务器,发送消息,给与反馈。
  • 所有都要求先有服务器开启才能客户端连接。
  • 下面主要演示两种编程实现简单的聊天
  • UDP示例代码:
    • 服务器端代码
    • 客户端代码
import socket
def serverFunc():# 建立socket# socket.AF_INET使用ipv4协议族# socket.SOCK_DGRAM使用udp通讯sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定ip和port# 127.0.0.1代表机器本身(这里也可以指定其他ip地址)# 端口7852(随机选择一个而已)# 地址是一个tuple类型。(ip,port)addr = ("127.0.0.1", 7677)sock.bind(addr)# 接受对方消息# 等待方式为死等,没有其他可能性# recvfrom接受的返回值是一个tuple, 前一项表示数据,后一项表示地址# 参数的含义是缓冲区大小while True:data, addr = sock.recvfrom(500)# 发送过来的数据是byte 类型,解码才得字符串print("收到消息:"+data.decode())rsp = input("发送消息:")# 发送数据编码成为bytedata = rsp.encode()sock.sendto(data, addr)
if __name__ == '__main__':print("start  Server")serverFunc()print("end  Server")
import socket
def clientFunc():sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)while True:text = input("发送消息:")# 发送的str必须编码data = text.encode()# 向该位置发送数据sock.sendto(data, ("127.0.0.1", 7677))# 接受反馈data, addr = sock.recvfrom(200)# 解码数据data = data.decode()print("收到消息:"+data)
if __name__ == '__main__':clientFunc()

  • TCP示例代码

    • 服务器端代码
    • 客户端代码
import socket
def tcp_srv():# 建立socket进行通讯# socket.AF_INET使用ipv4协议族# socket.SOCK_STREAM使用tcp通讯sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定端口和地址addr = ("127.0.0.1", 8990)sock.bind(addr)# 监听接入访问的socketsock.listen()while True:# 接受访问的socketskt, addr = sock.accept()# 获得为bytes格式msg = skt.recv(200)msg = msg.decode()rst = "收到消息:{}".format(msg)print(rst)# 发送反馈msg = input("发送消息:")skt.send(msg.encode())# 关闭链接通路skt.close()
if __name__ == '__main__':print("start Server")tcp_srv()print("end Server")
import socket
def tcp_clt():sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)addr = ("127.0.0.1", 8990)sock.connect(addr)# 发送内容到服务器while True:msg = input("发送消息:")sock.send(msg.encode())# 接受反馈rst = sock.recv(200)print("收到消息"+rst.decode())# 关闭链接通路sock.close()
if __name__ == '__main__':tcp_clt()

python高级语法-套接字编程之UDP和TCP编程相关推荐

  1. 网络编程(part10)--socket套接字编程之UDP套接字

    鄙人学习笔记 文章目录 UDP套接字编程 服务端流程 举个例子 客户端流程 举个例子 TCP套接字和UDP套接字编程区别 UDP套接字编程 服务端流程 创建数据报套接字 sockfd = socket ...

  2. 网络套接字编程之IO模型详解

    网络套接字编程之IO模型详解 本文主要参考自<UNIX网络编程>(第1卷)(套接口API第3版) Unix下可用的五种I/O模型有: 阻塞式I/O 非阻塞式I/O I/O复用(select ...

  3. 网络编程(part9)--socket套接字编程之TCP套接字

    鄙人学习笔记 文章目录 套接字介绍 定义 套接字分类(针对TCP和UDP的分类) TCP套接字编程 服务端流程 代码实现 举个例子 客户端流程 代码实现 举个例子 TCP套接字数据传输特点 做个练习 ...

  4. Linux套接字编程之sockaddr与sockaddr_in网络套接字,sockaddr_un进程间通信本地套接字

    sockaddr struct sockaddr { unsigned  short  sa_family;     /* address family, AF_xxx */ char  sa_dat ...

  5. Java网络编程之UDP和TCP套接字

    文章目录 一. 网络编程概述 二. UDP网络编程 1. UDP套接字 2. UDP客户端回显服务器程序 2.1 UDP回显服务器 2.2 UDP客户端 2.3 UDP实现查词典的服务器 三. TCP ...

  6. 黑马程序员:Socket编程之(UDP vs TCP)

    ---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- UDP和TCP都是传输协议,设备之间遵循通讯 ...

  7. Java网络编程之UDP与TCP的网络编程

    ⭐️前面的话⭐️ 本文将介绍java中的网络编程,常见的网络编程方式有两种,一种是UDP,另外一种是TCP,其中UDP的服务器与客户端之间不需要建立连接就能进行通信,而TCP需要先建立服务器与客户端之 ...

  8. Python中的网络编程之UDP

    Python中的网络编程之UDP 文章目录 Python中的网络编程之UDP 一.Socket编程 `1.什么是客户端/服务器架构`? **`2.套接字:通信端点`** 3.套接字地址:主机-端口对 ...

  9. Python网络编程之二:网络编程基础

    Python网络编程之二:网络编程基础 一.基础概念 1.两个地址 1.1.mac地址 mac地址:直译为媒体存取控制位址,也称为局域网地址.MAC位址.以太网地址或物理地址,它是一个用来确认网络设备 ...

最新文章

  1. 数据库查询语言SQL概念
  2. spring bean属性scope
  3. flink-faker用法示例(还没弄完,到时候再说)
  4. Bladex生成Swagger的方法
  5. c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构
  6. iPhone 12性能暴增!将再次与安卓拉开距离
  7. php获取最后几个字符,php怎么去掉最后几个字符
  8. 推荐系统系列教程之十七:简单却有效的Bandit算法
  9. archman linux教程,Archman GNU/Linux 2020-01 发布,基于Arch的Xfce桌面发行版
  10. python类方法为装饰器_类方法的python装饰器
  11. mysql 执行时间有波动_阿里P8架构师谈mysql性能优化思路
  12. unity 获得当前物体_unity 获取物体尺寸
  13. MATLAB深度学习工具箱文档——trainingOptions函数的参数设置
  14. 怎么浏览计算机上的驱动程序,怎么查找和更新驱动程序
  15. python保存文件名,line 257, in urlretrieve tfp = open(filename, ‘wb‘)OSError: [Errno 22] Invalid argument:
  16. 微信小程序:经典语录大全微信小程序源码
  17. WTP 线程池管理系统,修改配置后能够实时刷新
  18. 通过ESP8266手机或电脑浏览器网页能控制远程任意组任意路继电器开关并收发单片机指令 测试OK
  19. 范莎学院 计算机,申请范莎学院
  20. 2022QS世界大学排名:全球全日制MBA、商科硕士榜单公布

热门文章

  1. 怎么获取插入的最新自动生成的ID
  2. 我如何看Spring5?
  3. 执行Bean 实例化
  4. 定时任务 - 定时任务弊端与优化方案
  5. vscode安装和使用
  6. RocketMQ各种集群模式介绍
  7. Hive的基本操作-排序
  8. RabbitMQ原理讲解
  9. docker命令整理
  10. 退耦电容,旁路电容和滤波电容的一些区别?