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对内存的使用(深浅拷贝)
Jan 17 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
pyqt5实现俄罗斯方块游戏
Jan 11 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
python中的反斜杠问题深入讲解
Aug 12 Python
在Python中实现函数重载的示例代码
Dec 12 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 Python
Python实现一个论文下载器的过程
Jan 18 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
Vue中props的使用详解
2018/06/15 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
Python发送Email方法实例
2014/08/21 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
解决Python安装cryptography报错问题
2020/09/03 Python
Python collections模块的使用方法
2020/10/09 Python
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
创业者是否需要商业计划书?
2014/02/07 职场文书
火车来了教学反思
2014/02/11 职场文书
团拜会策划方案
2014/06/07 职场文书
娱乐节目策划方案
2014/06/10 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
初三英语教学计划
2015/01/23 职场文书
党支部工作总结2015
2015/04/01 职场文书