python 通信

Posted granddarkness

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 通信相关的知识,希望对你有一定的参考价值。

通信

说通信,也就是两个py文件之间的数据交互

先建两个py文件,一个是Server端

import socket     #调用socket模块
sk = socket.socket()    #为这个模块的方法重命名,为的是方便使用
sk.bind((127.0.0.1,8080))      #然后指定一个IP地址,一个端口 127.0.0.1是本地回环地址
sk.listen()   # 开始监听          # 通常端口会被系统占用一些 所以习惯使用8080之后的端口
conn,addr = sk.accept()    #接受别人的通讯请求   connection 连接  address 地址
ret = sk.recv(1024)        # 接收别人的信息   1024指的是接收的最大字节数  这也是最大值了
print(ret)                 #打印出别人说话内容
conn.send(bhi)           #进行回话
conn.close()               #关闭连接
sk.close()                 #关闭服务

然后建一个Client端

import socket
sk = socket.socket()
sk.connect((127.0.0.1,8080))   #连接目标的地址和端口
sk.rend(bhello)                #发送内容
ret = sk.recv(1024)               #接收
print(ret)                        #打印接收
sk.close()                        #关闭

然后启动Server端再启动Client端

然后Server端与Client端进行了一次短暂的对话

然后  再写一个能人为输入的连接

import socket
sk = socket.socket()
sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)  # 避免服务重启的时候报address already in use
sk.bind((127.0.0.1,8088))
sk.listen()
conn,addr = sk.accept()
while True:                    #设定一个循环 让人可以循环通信
    ret = conn.recv(1024).decode(utf-8)        #对传来的信息进行解码
    print(ret) 
    if ret == bye:             #给循环一个结束条件 
        break
    info = input(>>>)
    conn.send(bytes(info,encoding=utf-8))   #将传出的信息进行转码  因为中文会乱码
conn.close()
sk.close()
import socket
sk = socket.socket()
sk.connect((127.0.0.1,8088))
while True:
    info = input(>>>)
    sk.send(bytes(info,encoding=utf-8))
    if info == bye:
        break
    ret = sk.recv(1024).decode(utf-8)
    print(ret)
    if ret == bye:
        sk.send(bbye)
        break
sk.close()

这样就能实现两端人为输入交流了

同时注意一定要进行转码和解码 不然中文会报错

以上是关于python 通信的主要内容,如果未能解决你的问题,请参考以下文章

无法通过接口获取与片段通信的活动

如何在嵌套片段内的两个子片段之间进行通信

常用python日期日志获取内容循环的代码片段

与 viewpager 内的片段的父片段通信

python 有用的Python代码片段

Python 向 Postman 请求代码片段