函数介绍

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中运行服务端代码,运行结果:

在cmd中运行客户端代码,运行结果:

以上就是python 实现客户端与服务端的通信的详细内容,更多关于python 客户端与服务端的资料请关注乐虎体育其它相关文章!

标签:

python 实现客户端与服务端的通信的更多相关文章

  1. 如何用python写个模板引擎

    一.实现思路本文讲解如何使用python实现一个简单的模板引擎, 支持传入变量, 使用if判断和for循环语句, 最终能达到下面这样的效果:渲染前的文本:{}十以内的奇数:{% for i in range(10) %}{% if i%2==1 %}{{i}}{% end %}{% e......

  2. python用分数表示矩阵的方法实例

    前言在机器学习中,我们会经常和矩阵打交道。在矩阵的运算中,python默认的输出是浮点数,但是如果我们想要矩阵的元素以分数的形式显示,可以通过添加一行代码来实现。1、函数及参数解释set_printoptions()——控制输出方式formatter——通用格式化输出Fraction(x).limi......

  3. Python单元测试框架pytest常用测试报告类型

    先前博客有介绍pytest测试框架的安装及使用,现在来聊聊pytest可以生成哪些测试报告1.allure测试报告关于allure报告参见先前的一篇博文:https://www.cnblogs.com/feng0815/p/13792188.html ,这里不再赘述2.生成resultlog文件#!......

  4. 用python60行代码写一个简单的笔趣阁爬虫

    系列文章目录python爬虫实战——爬取淘宝商品信息并导入EXCEL表格(超详细)python多线程爬取壁纸 妈妈再也不担心我没壁纸了!.python爬虫爬取虎牙数据(简单利用requests库以及Beautifulsoup).python爬虫之爬取壁纸(新手入门级).python爬虫实战——爬取猫......

  5. 执行py文件需要可执行权限吗?

    我们知道可执行权限x在Linux系统中的重要性,那么在执行py文件的过程中,是否一定需要可执行权限呢?本文将会详细的分析几种测试案例。案例解析这个问题描述起来有点违反直觉,要执行一个文件难道不应该需要可执行权限吗?让我们先来看一个例子:# module1.pydef test():print ('h......

  6. python中用ggplot绘制画图实例讲解

    Python的绘图库也允许用户创建优雅的图形,本章给大家介绍的是关于ggplot绘制画图的技巧,ggplot2建立在grid系统上,这个系统不支持纹理。需要额外创建一堆数据,再基于这些数据构建一个geom_path图层,盖在柱图上才可以进行各种绘制,下面给大家详细讲解下怎么使用ggplot绘图。简介......

  7. 复杂的数据类型

    目录一、列表 1.列表介绍 2.列表读取 读取单个元素 读取列表的一部分 3.列表的修改 4.其他常用操作列表的函数 二、字典 1.字典的介绍 2.字典的读取 3.字典的元素增减 一、列表1.列表介绍列表,数据类型为list,可以存储多个不同种类的元素,其中,字符串元素需要加引号,且元素间要用逗号隔......

  8. 详解Pymongo常用查询方法总结

    Python 直接连接mongodb数据库进行查询操作1、安装所需模块使用到的是pymongo模块,安装方法:pip install pymongo2、环境验证3、连接数据库import pymongodef operating_mongodb():client = pymongo.MongoC......

  9. 如何用python批量调整视频声音

    今天来研究python中moviepy模块的用途近来有大量处理视频的需求,常会碰到一个问题是下载的视频音量过小,会需要将它调大声,虽然有在线工具VideoLouder可以免费调整视频音量大小,但毕竟若量很大的话一个一个上传视频也是挺麻烦的事情,因此决定再用程序帮忙解决。使用教学基础程序调整一个视频音......

  10. python实现简单的井字棋游戏(gui界面)

    项目输出项目先决条件要使用python构建井字游戏,我们需要tkinter模块和python的基本概念Tkinter模块是用于渲染图形的标准图形用户界面。Tkinter.messagebox用于显示消息框要安装tkinter模块,我们在命令提示符下使用了pip install命令:pip insta......

随机推荐

  1. php结合GD库实现中文验证码的简单方法

    前言上一次写了一个常见的验证码,现在玩一下中文的验证码,顺便升级一下写的代码流程基本差不多先看GD库开启了没生成中文5位验证码开始画图画干扰素生成图形完事生成中文验证码?1234567891011//小小心机$hanzi= "如果觉得写得还可以的话互相关注报团取暖交流经验来自合肥的小码农巴......

  2. Android如何实现动态滚动波形图(心电图)功能

    一、前言最近涉及的某个医疗相关的业务,传感器数据传递上来需要实现示波器的效果,心电图的效果,目前交付效果还算理想,于是封装了一下,方便自己以后使用,也给大家分享一下二、效果图图一是心电图效果,图二是一个滚动的波形图三、功能实现(一)绘制背景网格为了让他看上去像示波器上的数据,我们先绘制一层网格背景,......

  3. 文件上传漏洞全面渗透姿势总结

    文件上传漏洞全面渗透姿势总结0x00 文件上传场景(本文档只做技术交流,切勿进行违法犯罪操作,请做一个好人,不给别人添麻烦)文件上传的场景真的随处可见,不加防范小心,容易造成漏洞,造成信息泄露,甚至更为严重的灾难。比如某博客网站评论编辑模块,右上角就有支持上传图片的功能,提交带有恶意字符串的图片后,......

  4. ASP.NET Core中如何实现重定向详解

    前言ASP.NET Core 是一个跨平台,开源的,轻量级的,模块化的,用于构建高性能的 web 开发框架, ASP.NET Core MVC 内置了多种方式将一个 request 请求跳转到指定的url,这篇文章我们就来讨论如何去实现。理解 RedirectActionResultASP.NET ......

  5. 使用nodejs和express搭建http web服务

    目录简介使用nodejs搭建HTTP web服务请求nodejs服务第三方lib请求post获取http请求的正文Express和使用express搭建http web服务express helloworldexpress路由Express 路由句柄中间件Express 响应方法Express 的静......

  6. python使用numpy中的size()函数实例用法详解

    在python中,提到如何计算多维数组和矩阵,那一定会想到numpy。numpy定义了矩阵和数组,为它们提供了相关的运算。size中文解释为大家、尺寸的意思,如果想要统计矩阵元素个数,使用size()函数就可以解决。1、Numpy size()函数主要是用来统计矩阵元素个数,或矩阵某一维上的元素个数......

  7. python pillow库的基础使用教程

    知识点图像模块 (Image.Image)Image模块的功能Image模块的方法ImageChops模块ImageColor模块基础使用图像模块 Image.Image加载图像对象,旋转90度并显示from PIL import Image#显示图像im = Image.open('backgro......

  8. 史上最详细的Python打包成exe文件教程

    打包成exe文件可以让python代码在没有python环境的条件下,依然能够运行,实在是码农们写追女朋友表白、情人节浪漫的必需品!1、使用豆瓣镜像源下载: pyinstaller有需要了解如何使用国内镜像的小伙伴可以滴滴到此:国内镜像源详细使用教程!https://blog.csdn.net/xt......

  9. 一文秒懂nodejs中的异步编程

    文章目录 简介同步异步和阻塞非阻塞javascript中的回调回调函数的错误处理回调地狱 ES6中的Promise什么是PromisePromise的特点Promise的优点Promise的缺点Promise的用法Promise的执行顺序 async和awaitasync的执行顺序async的特点 ......

  10. python画图时设置分辨率和画布大小的实现(plt.figure())

    本文介绍了python画图时设置分辨率和画布大小的实现,主要使用plt.figure(),下面就一起来了解一下plt.figure()示例:?12345678910111213import numpy as npimport pandas as pdimport warningswarnings.f......