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 相关文章推荐
Python3字符串学习教程
Aug 20 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Python中scatter函数参数及用法详解
Nov 08 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
Django框架的使用教程路由请求响应的方法
Jul 03 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
wxPython实现绘图小例子
Nov 19 Python
Python + Requests + Unittest接口自动化测试实例分析
Dec 12 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
Feb 24 Python
基于python爬取有道翻译过程图解
Mar 31 Python
python编写实现抽奖器
Sep 10 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实现ODBC数据分页显示一例
2006/10/09 PHP
php创建、获取cookie及基础要点分析
2015/01/26 PHP
PHP查询快递信息的方法
2015/03/07 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
2011/12/12 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
Vue.js实现表格渲染的方法
2018/09/07 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
python之django母板页面的使用
2018/07/03 Python
想学python 这5本书籍你必看!
2018/12/11 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
python树莓派红外反射传感器
2019/01/21 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
意向书范文
2014/03/31 职场文书
个人授权委托书范本
2014/04/03 职场文书
中学教师读书笔记
2015/07/01 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书