[Python 网络编程]

早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple 和 Microsoft 都有各自的网络协议,互不兼容为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet ProtocolSuite)就是通用协议标准。

因为互联网协议包含了上百种协议标准,但是最重要的两个协议是 TCP 和 IP 协议,所以,大家把互联网的协议简称 TCP/IP 协议

udp- 套接字

#!/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Software: PyCharm
# @virtualenv:workon
# @contact: 1040691703@qq.com
# @Desc:Code descripton
__author__ = '未昔/AngelFate'
__date__ = '2020/5/30 20:26'

from socket import *  # 导入socket
from threading import *  # 导入threading

udp = socket(AF_INET, SOCK_DGRAM)  # 创建套接字,基于UDP传输协议。相对于TCP比较快。AF_INET表示使用IPV4进行链接。如果使用IPV6则把参数修改为AF_INET6

udp.bind(('', 8080))  # 绑定任意ip,和8080端口,如果不进行绑定,那么每创建一个套解字就会使用一个动态端口。

sendip = input('输入接收方的IP:')
sendport = int(input('输入接收方的端口:'))


def sendinfo():  # 定义发送函数
    while True:
        senddata = input('请输入发送的内容:')
        udp.sendto(senddata.encode('utf-8'), (sendip, sendport))  # 调用套解字的sendto方法,第一个参数为编码后的数据,第二个参数为接收方的IP和端口。


def receiveinfo():  # 定义接收函数
    while True:
        recvdata = udp.recvfrom(1024)  # 调用recvfrom方法进行数据接收,并且以元祖的方式返回,第一个参数是数据,第二个参数为IP和端口。与发送格式一致。
        print(recvdata[1], recvdata[0].decode('utf-8'))  # 将接收到的数据进行打印,并将数据进行解码。


def main():
    ts = Thread(target=sendinfo)  # 创建一个线程运行发送函数。
    tr = Thread(target=receiveinfo)  # 创建一个线程运行接收函数。

    ts.start()
    tr.start()

    ts.join()
    tr.join()


if __name__ == '__main__':
    main()

输入接收方的IP:127.0.0.1
输入接收方的端口:8800
请输入发送的内容:555202

[Python 网络编程]