python 实现客户端与服务端的通信


Posted in Python onDecember 23, 2020

函数介绍

Socket对象方法:

服务端:

函数 描述
.bind() 绑定地址关键字,AF_INET下以元组的形式表示地址。常用bind((host,port))
.listen() 监听TCP,可以挂起的最大连接数,该值至少为1,一般设为5即可
.accept() 被动接受TCP客户端的连接

客户端:

函数 描述
.connect() 初始化服务器连接
.connect_ex() 是对connect()函数的扩展,当出错时返回出错码,不报异常

其它函数:

函数 描述
.recv() 接收数据,数据以字符串的形式返回,bufsize指定接收的最大数据量。
.send() 发送数据,将string中的数据发送到连接的套接字,返回值是要发送的字节数量,通常使用.encode()函数对数据进行转码
.senddall() 发送完整的数据,在返回之前会尝试发送所有数据,成功返回None,失败则抛出异常。
.recvfrom() 与recv()函数类似,不同的是返回值是(data,address),其中data是包含接收数据的字符串,address是发送数据的套接字地址。
.sendto() 发送UDP数据,将数据发送到套接字,形式是(ipaddr,port)的元组。
.close() 关闭套接字

服务端

使用socket函数来创建一个socket对象,并设置一个socket服务,然后通过bind(hostname,port)函数来指定一个端口,使用socket对象的accept方法,等待客户端的连接,并返回connection对象。
具体步骤为:

创建服务端套接字
serversocket=socket()
把地址绑定到套接字
serversocket.bind()
对连接进行监听
serversocket.listen()
使用一个while进行循环,并接收客户端的连接
while True:
 serverclient=serversocket.accept()
 while True:
   #接收已发送
   serverclient.recv()
   serverclient.send()
   #关闭客户端套接字
   serverclient.close()
关闭服务端套接字
serversocket.close()

具体代码实现:

import socket
import sys
import time

serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()#获取本地主机名
port=9999
#绑定端口号
serversocket.bind((host,port))

#设置最大连接数
serversocket.listen(5)
while True:
  print('服务器启动,监听客户端链接')
  clientsocket,addr=serversocket.accept()
  print('链接地址:%s' % str(addr))
  while True:
    try:
      data=clientsocket.recv(1024)
    except Exception:
      print('断开的客户端:',addr)
      break
    print('客户端发送内容:',data.decode('utf-8'))
    reply=input('回复:').strip()
    if not reply:
      break
    msg=time.strftime('%Y-%m-%d %X')#获取结构化时间戳
    msg1='[%s]:%s'% (msg,reply)
    clientsocket.send(msg1.encode('utf-8'))
  clientsocket.close()
serversocket.closel()

实现功能:通过while实现循环接收客户端发送的数据,并对客户端发送的数据进行显示并返回给客户端数据,返回给客户端的数据信息后加入时间戳。

客户端

创建一个客户端用来连接以上服务的的服务,使用socket.connect()方法打开一个TCP连接到主机,连接后可以从服务端获取数据,在操作完成后关闭连接。 具体步骤为: ``` 创建客户端的套接字 client=socket() 尝试连接服务器 client.connect() 发送并接收数据 client.send() client.recv() 关闭客户端套接字 client.close() ``` **具体代码实现:**

import socket
import sys


s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host=socket.gethostname()
port=9999
s.connect((host,port))
while True:
  data= input('>>').strip()
  if not data:
    break
  s.send(data.encode('utf-8'))
  msg=s.recv(1024)
  if not msg:
    break
  print(msg.decode('utf-8'))
s.close()

测试

使用cmd命令行中打开到代码所在文件目录,执行python 服务端文件名.py,再另打开一个cmd命令界面执行 python 客户端文件名.py
在pycharm中运行服务端代码,运行结果:

python 实现客户端与服务端的通信

在cmd中运行客户端代码,运行结果:

python 实现客户端与服务端的通信

以上就是python 实现客户端与服务端的通信的详细内容,更多关于python 客户端与服务端的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
python简单获取数组元素个数的方法
Jul 13 Python
Django admin美化插件suit使用示例
Dec 12 Python
numpy找出array中的最大值,最小值实例
Apr 03 Python
python字符串查找函数的用法详解
Jul 08 Python
浅析Python 引号、注释、字符串
Jul 25 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 Python
Python采集壁纸并实现炫轮播
Apr 30 Python
python实现excel公式格式化的示例代码
Dec 23 #Python
python 基于opencv实现图像增强
Dec 23 #Python
python接口自动化框架实战
Dec 23 #Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 #Python
python实现发送QQ邮件(可加附件)
Dec 23 #Python
如何通过安装HomeBrew来安装Python3
Dec 23 #Python
python实现定时发送邮件到指定邮箱
Dec 23 #Python
You might like
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
JavaScript 实现类的多种方法实例
2013/05/01 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python中requests模块的使用方法
2015/04/08 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
利用python在excel中画图的实现方法
2020/03/17 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
汇智创新科技发展有限公司
2015/12/06 面试题
绝对经典成功的大学生推荐信
2013/11/08 职场文书
理工科学生的自我评价
2013/12/15 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL