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下载文件记录黑名单的实现代码
Oct 24 Python
Python中进程和线程的区别详解
Oct 29 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
解决Python运行文件出现out of memory框的问题
Dec 03 Python
Pycharm新手教程(只需要看这篇就够了)
Jun 18 Python
获取django框架orm query执行的sql语句实现方法分析
Jun 20 Python
解决Python安装时报缺少DLL问题【两种解决方法】
Jul 15 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
Dec 09 Python
基于python 取余问题(%)详解
Jun 03 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
Python 多进程、多线程效率对比
Nov 19 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 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基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
PHP实现简易blog的制作
2016/10/24 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
实例代码讲解jquery easyui动态tab页
2015/11/17 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
从零学Python之引用和类属性的初步理解
2014/05/15 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python列表切片操作实例总结
2019/02/19 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
解决python 找不到module的问题
2020/02/12 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
计算机学生求职信范文
2014/01/30 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
毕业设计说明书
2014/05/07 职场文书
服务理念口号
2014/06/11 职场文书
运动会新闻报道稿
2015/07/22 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript