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 11 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
Python离线安装PIL 模块的方法
Jan 08 Python
Python docx库用法示例分析
Feb 16 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
python登录WeChat 实现自动回复实例详解
May 28 Python
Python 从subprocess运行的子进程中实时获取输出的例子
Aug 14 Python
django使用xadmin的全局配置详解
Nov 15 Python
python实现高斯判别分析算法的例子
Dec 09 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 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
Syphon 秘笈
2021/03/03 冲泡冲煮
php5.3 注意事项说明
2013/07/01 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python3中bytes和string之间的互相转换
2017/02/09 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
python 字符串和整数的转换方法
2018/06/25 Python
python的concat等多种用法详解
2018/11/28 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
大学生就业求职信
2014/06/12 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
个人职业及收入证明
2014/10/13 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
python之json文件转xml文件案例讲解
2021/08/07 Python
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
PostgreSQL自动更新时间戳实例代码
2021/11/27 PostgreSQL
HttpClient实现表单提交上传文件
2022/08/14 Java/Android