python服务器端+客户端
时间:2019-10-26
本文章向大家介绍python服务器端+客户端,主要包括python服务器端+客户端使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、最简单的服务端和客户端
服务端代码
import socket #网络编程需要用到socket模块 server = socket.socket() #创建一个用于监听连接的Socket对像(服务器端) server.setblocking(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #解决服务重启时报address already in use server.bind(('127.0.0.1', 9001)) #设置服务端的ip和端口号 server.listen() #开始监听 conn, addr = server.accept() #接受服务器端发出的消息和地址信息 c_info = conn.recv(1024) #将接受的消息存入到c_info变量中 print(c_info) conn.send(b'hello word') #向客户端发出消息 conn.close() #关闭连接 server.close() #关闭服务端
客户端代码
import socket #网络编程需要用到socket模块 client = socket.socket() #创建一个客户端 client.connect(('127.0.0.1', 9001)) #连接服务端 client.send(b'nice to meet you') #向服务端发消息 s_info = client.recv(1024) #接受服务端发来的消息 print(s_info) client.close() #关闭客户端
2、可交互的服务端和客服端
服务端代码
import socket server = socket.socket() server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind(('127.0.0.1', 9001)) server.listen() conn, addr = server.accept() while True: info=input('>>>') #输入数据,编码并发送给客户端 info=info.encode('utf-8') conn.send(info) c_info = conn.recv(1024).decode('utf-8') #接受客户端消息并解码 print(c_info) if c_info == 'bye': #当客户端发送bye时,服务端给客户端发送bye并结束循环 conn.send(b'bye') break conn.close() server.close()
客户端代码
import socket client = socket.socket() client.connect(('127.0.0.1', 9001)) while True: s_info = client.recv(1024) #接受服务端的消息并解码 s_info = s_info.decode(encoding='utf-8') print(s_info) if s_info == 'bye': #如果服务端发送的消息为bye,回复bye,结束循环 client.send(b'bye') print('bye_1') break info = input('>>>') #输入数据,编码并发送给服务端 info = info.encode('utf-8') client.send(info) client.close()
总结:无论是服务端和客户逻辑是怎样的,服务端和客户端收发要对应。
代码亲测过,只写了逻辑实现,改进空间很大,请多指点。
原文地址:https://www.cnblogs.com/fuqiuyang1/p/11741961.html
- 轻松初探 Python 篇(四)—list tuple range 知识汇总
- CSS深入理解学习笔记之overflow
- Python爬虫实践——简单爬取我的博客
- Python爬虫入门(二)
- 在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth起步创建应用程序使用NUGET更新OWIN中间件启动SSL支持申请腾讯QQ的Oauth申请新浪微博的Oauth快速接入资源地址&源码
- 有趣的算法(六) ——Find-Union算法
- 有趣的算法(七) ——快速排序改进算法
- 编写你人生中第一个机器学习代码吧!
- 使用Octave来学习Machine Learning(二)
- RESTful API的十个最佳实践1. 使用名词而不是动词 2. Get方法和查询参数不应该改变资源状态3. 使用名词的复数形式 4. 为关系使用子资源 5. 使用HTTP头决定序列化格式 6. 使
- MYSQL数据库设计的一些小技巧[转载]
- 在ASP.NET 5应用程序中的跨域请求功能详解什么是“同域”添加CORS包在应用程序中配置CORSCORS策略选项跨域请求中的凭据设置先行请求的过期时间CORS是怎么样工作的先行请求
- 有趣的算法(八) ——红黑树插入算法
- 使用Donut Caching和Donut Hole Caching在ASP.NET MVC应用中缓存页面何时使用Donut CachingDonut Caching 的Nuget 包Donut Ho
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法