精华内容
下载资源
问答
  • python客户端与服务器端通信

    千次阅读 2019-03-20 21:19:42
    #服务器端 import socket import multiprocessing # 创建套接字 skt = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)#括号里不写参数默认是这个skt = socket.socket()等价 # family:协议族,...

    #服务器端

    import socket
    import multiprocessing
    
    
    # 创建套接字
    skt = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)#括号里不写参数默认是这个skt = socket.socket()等价
    # family:协议族,socket.AF_INET表示IPv4
    # type:传输协议,socket.SOCK_STREAM表示TCP协议
    
    # 设置地址可重用
    skt.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    # 这里value设置为1,表示将SO_REUSEADDR标记为TRUE,
    # 操作系统会在服务器socket被关闭或服务器进程终止后马上释放该服务器的端口,否则操作系统会保留几分钟该端口。
    
    # 绑定主机和端口
    skt.bind(('10.8.165.6', 8888)) #改成你自己的ip地址
    
    # 监听服务
    skt.listen(100)
    # listen里有个参数backlog是指定tcpsever可以同时接受多少个客服端的连接申请,当超过此数时server将拒绝客户端的连接申请,
    # 给出socket.error: [Errno 10061]错误。tcp的server尽管可以同时接受n个客服端连接,但只能和第一个连接的客服端互相通信,
    # 当第一个tcp连接的客户端关闭后才能和第二个连接申请的客户端通信,即后边的被阻塞了,一次只能和一个tcp客户端进行通信。
    
    def echo(client_skt, client_addr):
        while True:
            # 接收客户端数据
            recv_data = client_skt.recv(1024)#recv()接收TCP数据,数据以字符串形式返回,bufsize指定要接收的最大数据量。flag提供有关消息的其他信息,通常可以忽略。
            #接受小于1024字节的数据
            host = socket.getfqdn(client_addr[0])#由计算机ip地址获取计算机主机名字
            #client_addr返回两个参数,第一个是ip地址,第二个是线程暂用的临时端口号
            print(host, ':', recv_data.decode('utf-8'), sep='')
            #关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符
            # print(1, 2, 3, sep=',', end='\r\n') 1,2,3  输出时一直输出到sep 逗号前的逗号
            # print(1, 2, 3, sep=' ', end='\r\n')1 2 3
    
            # 向客户端发送数据,实现镜像发送
            client_skt.send(recv_data)
            if recv_data == b'byebye':   #b是字节流,因为客户端传来的数据是编码成utf-8格式的
                break
        client_skt.close()
    
    
    if __name__ == '__main__':
        while True:
            # 等待客户端连接,会阻塞在这里
            client_skt, client_addr = skt.accept()
            print(client_skt,client_addr)
            p = multiprocessing.Process(target=echo, args=(client_skt, client_addr))
            p.start()
            client_skt.close()
        skt.close()

     

    #客户端

    import socket
    
    # 创建套接字
    skt = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
    # family:协议族,socket.AF_INET表示IPv4
    # type:传输协议,socket.SOCK_STREAM表示TCP协议
    
    # 连接服务器
    skt.connect(('10.8.165.6', 8888))
    
    while True:
        data = input('>>>:')
        # 向服务器发送数据
        skt.send(data.encode('utf-8'))
        # 等待接收服务器返回的数据
        recv_data = skt.recv(1024)
        print('服务器:', recv_data.decode('utf-8'))
        if recv_data == b'byebye':
            break
    
    skt.close()
    展开全文
  • python客户端与服务器端的通信

    千次阅读 2015-03-07 09:09:46
    connection,addr = sock.accept() #接受客户端的连接 try: connection.settimeout(5) buf = connection.recv(1024) if buf == 1: connection.send('welcome to server!') #向客户端发送一个字符串信息 else: ...

    Server.py:

    '''
        Created on 2015年3月7日
        
        @author: pangbin2415
        '''
    import socket
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 生成socket对象
    sock.bind(('localhost', 8001))                          #绑定主机ip和端口号
    sock.listen(5)
    while True:
        connection,addr = sock.accept()                     #接受客户端的连接
        try:
            connection.settimeout(5)
            buf = connection.recv(1024)
            if buf == 1:
                connection.send('welcome to server!')      #向客户端发送一个字符串信息
            else:
                connection.send("Failed")
        except socket.timeout:                             #如果出现超时
            print 'time out'
        connection.close()
    

    Client.py

    '''
    Created on 2015年3月7日
    
    @author: pangbin2415
    '''
    import socket
    import time
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect(('localhost', 8001))
    time.sleep(2)
    sock.send('1')
    print sock.recv(1024)


    展开全文
  • 主要介绍了Python实现的FTP通信客户端与服务器端功能,涉及Python基于socket的端口监听、文件传输等相关操作技巧,需要的朋友可以参考下
  • python 实现 MQTT通信(客户端与服务器端Python paho-mqtt 模块使用服务器端搭建下载apache-apollo-1.7.1-windows-distro安装apache-apollo-1.7.1-windows-distro解压到你对应的磁盘里进入bin目录创建你的服务启动...

    Python paho-mqtt 模块使用

    库的使用已经有人写的比较详细了,这里就借用了下人家写好的
    https://blog.csdn.net/youshenmebutuo/article/details/79779387

    服务器端搭建

    下载apache-apollo-1.7.1-windows-distro

    现在网上已经很找不到了,我给大家上存到了云盘里,供大家下载,里面还有一些调试工具

    链接:https://pan.baidu.com/s/1yez9rE-wEyZ4jT6bBq7XpA 
    提取码:jm03 
    复制这段内容后打开百度网盘手机App,操作更方便哦
    

    安装apache-apollo-1.7.1-windows-distro

    解压到你对应的磁盘里

    例如我解压在D:\mqtt里

    进入bin目录

    D:\mqtt\apache-apollo-1.7.1-windows-distro\apache-apollo-1.7.1\bin

    创建你的服务

     apollo.cmd create mytest
    

    mytest 为你的服务名,创建好如图所示,
    在这里插入图片描述

    启动服务

    创建好会在bin目录下创建一个名为mytest的文件夹,进入你文件夹的bin目录的终端

       D:\mqtt\apache-apollo-1.7.1-windows-distro\apache-apollo-1.7.1\bin\mytest\bin
    

    输入 apollo-broker.cmd run启动服务,启动好如图所示。
    在这里插入图片描述

    进入后台管理

    打开网页,输入ip + : 61680 进入后台管理 ,默认用户名admin 密码 password
    例如 127.0.0.1:61680在这里插入图片描述
    在这里插入图片描述

    python 实现客户端

    建议再看订阅和发布的时候,把文章第一部分paho-matt库的使用看一下,对你代码的理解有很大的帮助

    下载pip库

    pip install paho-mqtt
    

    订阅主题

    import time
    
    import paho.mqtt.client as mqtt
    # The callback for when the client receives a CONNACK response from the server.
    def on_connect(client, userdata, flags, rc):
        if rc == 0:
            print("连接成功")
            print("Connected with result code " + str(rc))
    
    def on_message(client, userdata, msg):
        print(msg.topic + " " + str(msg.payload))
    client = mqtt.Client(protocol=3)
    client.username_pw_set("admin", "password")
    client.on_connect = on_connect
    client.on_message = on_message
    client.connect(host="127.0.0.1", port = 61613, keepalive=60)  # 订阅频道
    time.sleep(1)
    # client.subscribe("public")
    client.subscribe([("public", 0), ("test", 2)])
    client.loop_forever()
    

    发布主题

    import paho.mqtt.client as mqtt
    import time
    import sys
    def on_connect(client, userdata, flags, rc):
        print("Connected with result code " + str(rc))
    def on_subscribe(client,userdata,mid,granted_qos):
        print("消息发送成功")
    client = mqtt.Client(protocol=3)
    client.username_pw_set("admin", "password")
    client.on_connect = on_connect
    client.on_subscribe = on_subscribe
    client.connect(host="127.0.0.1", port = 61613, keepalive=60)  # 订阅频道
    time.sleep(1)
    i = 0
    while True:
        try:
            # 发布MQTT信息
            sensor_data = "test" + str(i)
            client.publish(topic="public", payload=sensor_data, qos=0)
            time.sleep(5)
            i += 1
        except KeyboardInterrupt:
            print("EXIT")
            client.disconnect()
            sys.exit(0)
    

    运行结果

    在这里插入图片描述

    关于订阅主题介绍

    • /+/*
    client.subscribe('public/+/#', qos=2)
    

    可订阅到以下主题

    public/1
    public/2
    public/2/2
    
    • /+
    client.subscribe('public/+, qos=2)
    

    可订阅到以下主题

    public/1
    public/2
    
    • /#
    client.subscribe('public/#, qos=2)
    

    可订阅到以下主题

    public/1
    public/2
    public/1/2/2
    public/1/2
    
    • /2/+
    client.subscribe('public/2/+, qos=2)
    

    可订阅到以下主题

    public/2/2
    public/2/1
    
    • /+/2
    client.subscribe('public/+/2, qos=2)
    

    可订阅到以下主题

    public/2/2
    public/1/2
    
    展开全文
  • 主要介绍了python实现TCP服务器端与客户端的方法,以实例形式详解分析了Python实现服务器端与客户端的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • Python socket实现服务器端与客户端连接 服务器端与客户端每个5秒钟通信一次,具体实现如下: 服务器端代码 #!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.py import socket # 导入 socket 模块 ...

    Python socket实现服务器端与客户端连接

    服务器端与客户端每个5秒钟通信一次,具体实现如下:

    服务器端代码

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    # 文件名:server.py
     
    import socket               # 导入 socket 模块
    import time
    
    s = socket.socket()         # 创建 socket 对象
    host = socket.gethostname() # 获取本地主机名
    host='10.276.58.231'
    port = 8080                # 设置端口
    s.bind((host, port))        # 绑定端口
    s.listen(5)                 # 等待客户端连接
    while True:                  #新增接收链接循环,conn就是客户端链接过来而在服务端为期生成的一个链接实例
        conn,addr=s.accept()    #被动接受TCP客户端连接,(阻塞式)等待连接的到来,等待链接,多个链接的时候就会出现问题,其实返回了两个值
        print('连接地址:', addr)
        print('conn', conn)
        while True:
            try:
                data="server"
                conn.sendall(bytes(data,encoding="utf-8"))
                data=conn.recv(1024)
                print(str(data,encoding="utf-8"))
                
                while True:                 #新增通信循环,可以不断的通信,收发消息
                    a = 0
                # count = 0
                    while True:  
                        # count+=1
                        time.sleep(5)   #睡眠5秒
                        a+=1
                        keepclass = "Server->与服务器端已连接"+str(a*5)+"秒,发送时间:"+time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
                        # time.sleep(1)
                        conn.send(bytes(keepclass,'UTF-8'))  #发送消息
                        msg=conn.recv(1024*2)
                        msg.decode('utf-8')
                        print(str(msg.decode('utf-8')))
           
            except Exception as e:
               
                print(e)
                break
            conn.close()                #关闭连接  
    c.close()                # 关闭连接
    

    客户端代码

    #import socket module as socket
    import socket
    import sys
    ip_port=('10.276.58.231',8080)
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(ip_port)           #连接服务器端
    
    while True:                            #新增通信循环,客户端可以不断发收消息
         msg='wo shi kehuduan xingtiao'
         s.send(msg.encode('utf-8'))         #发送消息(只能发送字节类型)
         a=s.recv(1024)                           #接收消息
         sys.stderr.write('Client:' +str(a.decode('utf-8')) + '\n')
    s.close()                                       #socket关闭
    

    实现效果:
    服务器端效果:
    在这里插入图片描述
    客户端实现效果:
    在这里插入图片描述

    展开全文
  • 最近巩固下python语言,说真的,使用了这么多脚本语言,还是这门比较好玩点,快速,简洁,容易上手更不用说了。 socket 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供...
  • Python语言Socket使用TCP协议模拟模拟客户端与服务器端,实现文件下载器功能 注意:仅传送1KB以内文件大小,多点可以自行修改,单纯修改文件大小会造成其他错误 文件目录,大小等均可修改 另外因为服务端须不停...
  • 查找了许多资料,实现了客户端与服务器端的连接,通过虚拟机进行测试 服务器端IP:192.168.37.129 端口1122 客户端IP: 192.168.37.1 端口1122 Server: #coding:utf-8 from socket import * class Dserver...
  • 客户端 ''' 1、导⼊ socket 模块 2、创建socket 套接字 3、建⽴tcp连接(和服务端建⽴连接) 4、开始发送数据(到服务端) 5、接收服务端发送的信息 6、关闭套接字 ''' # 1、导⼊ socket 模块 from socket import *...
  • #客户端 import socket #创建socket对象 client_send = socket.socket() #确定IP ip_port = ("10.11.53.74",10010) #建立客户端链接 client_send.connect(ip_port) while True: #发送消息 msg = input("请输入...
  • 上一篇文章socket网络程序设计实验二简单演示了socket编程的大致框架,这次我们加强一下功能,实现客户端与服务器端一对一聊天 老规矩,先上图!
  • 服务器端 import socket serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) serversocket.bind(('127.0.0.1',8000)) serversocket.listen(1) clientsocket,clientaddress=serversocket.accept() print...
  • 聊天室的简单实现,不废话,直接上代码服务器端:from socketserver import TCPServer, ThreadingMixIn, StreamRequestHandler from linux_time import datetime_now class Server(ThreadingMixIn, TCPServer): ...
  • 近段时间在做Unity客户端与python服务器之间的网络通信,由于不同语言之间的类型封装不同,不建议直接收发自定义的协议类型字节序列,而是使用json字符串序列进行过渡。 python提供了json模块进行序列化和反序列化,...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 721
精华内容 288
关键字:

python客户端与服务器端

python 订阅