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爬虫技巧汇总
Sep 28 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
Python实现查看系统启动项功能示例
May 10 Python
Python标准库shutil用法实例详解
Aug 13 Python
Python实现多进程的四种方式
Feb 22 Python
python实现电子书翻页小程序
Jul 23 Python
python psutil监控进程实例
Dec 17 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 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添加Xdebug扩展的方法
2014/02/12 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
jquery实现心算练习代码
2010/12/06 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python多线程和队列操作实例
2015/06/21 Python
Django权限机制实现代码详解
2018/02/05 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Mysql数据库反向生成Django里面的models指令方式
2020/05/18 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
django跳转页面传参的实现
2020/09/17 Python
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
机电一体化大学生求职信
2013/11/08 职场文书
结婚邀请函范文
2014/01/14 职场文书
社区党务公开实施方案
2014/03/18 职场文书
物业管理专业求职信
2014/06/11 职场文书
超市店庆活动方案
2014/08/31 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
2015年团支书工作总结
2015/04/03 职场文书
该怎么书写道歉信?
2019/07/03 职场文书