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远程登录代码
Apr 29 Python
python通过socket查询whois的方法
Jul 18 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
opencv python 傅里叶变换的使用
Jul 21 Python
python实现简单登陆系统
Oct 18 Python
从DataFrame中提取出Series或DataFrame对象的方法
Nov 10 Python
python实现滑雪游戏
Feb 22 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
Python之字典对象的几种创建方法
Sep 30 Python
PyCharm 光标变成黑块的解决方式
Feb 06 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调用.NET的WebService 简单实例
2015/03/27 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
React组件refs的使用详解
2018/02/09 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
python中xrange和range的区别
2014/05/13 Python
Python selenium 三种等待方式详解(必会)
2016/09/15 Python
python中学习K-Means和图片压缩
2017/11/20 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
python两种注释用法的示例
2020/10/09 Python
Noon埃及:埃及在线购物
2019/11/26 全球购物
Java程序员面试题
2016/09/27 面试题
2015大学生实训报告
2014/11/05 职场文书
护士自我推荐信范文
2015/03/24 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
Spring Boot DevTools 全局配置学习指南
2022/03/31 Java/Android
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers