Python程序设计之网络编程(1)

1.关于网络编程

①关于套接字
Socket(套接字)是计算机之间进行网络通信的一套程序接口,可以实现跨平台数据的传输。Socket是网络通信的基础,相当于在发送端和接收端建立了一个管道来实现数据和命令的相互传递。
②网络体系结构
现目前较为主流的网络体系结构是ISO/OSI参考模型和TCP/IP协议族,两种结构都采用分层和实现方式;ISO/OSI从上至下分为应用层、表示层、会话层、传输层、网络层、数据链路层和物理层;TCP/IP则将网络划分为应用层、传输层、网络层和链路层。采用分层设计保证每一层之间可以独立设计和实现。
③网络协议
网络协议是计算机网络中进行数据交换而建立的规则、标准。主要分为三类:语法(语法规定用户数据与控制信息的结构与格式)、语义(用来解释控制信息每个部分的意义,规定了需要发出各种控制信息,以及需要完成的动作和做出什么样的响应)、时序(对事件发生顺序的详细说明,简称“同步”)。
④应用层协议
应用层直接与最终用户进行交互,定义了运行在不同终端系统上的应用程序进程如何相互传递报文(可以在终端输入ipconfig/all查看域名及其他相关信息):
DNS:域名服务,用来实现域名和IP之间的转换
FTP:文件传输协议,可以实现不同网络之间文件的传输
HTTP:超文本协议
SMTP:简单邮件协议
TELNET:远程登陆协议
⑤传输层协议
主要有UDP和TCP两大协议,其中TCP是面向连接的,具有质量保证的可靠传输协议,但开销较大;UDP是尽最大能力传输的无连接协议,开销小,常用于在线点播之内的应用。
⑥IP地址
IP运行于网络体系结构的网络层,是网络互连的重要基础。IP(32位或128位二进制数)用来标识网络上的主机,在公开网络中或同一个局域网内部,每一台主机必须使用不同的IP地址。
⑦MAC地址
称为网卡地址或物理地址,是一个48位的二进制数,用来标识不同的网卡物理地址。

2.第一个通信程序

①接收端

import socket
import sys
import tkinter
import tkinter.ttk

def main():


    #使用IPV4协议,使用UDP传输协议
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #绑定端口和端口号,空字符表示本机任何可以用的IP地址
    s.bind(('',5000))
    while True:
        data,addr=s.recvfrom(1024)
        #显示接受内容
        print('receve message:{0} from PORT{1} on {2}'.format(data.decode(),addr[1],addr[0]))
        if data.decode().lower()=='bye':
            break
    s.close()


if __name__ == '__main__':
    main()

②发送端

import socket
import sys
def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 接受机端的ip地址
    s.sendto(sys.argv[1].encode(), ("192.168.8.148", 5000))
    s.close()
if __name__ == '__main__':
    main()



③运行效果

在这里插入图片描述

发布了78 篇原创文章 · 获赞 83 · 访问量 5384

猜你喜欢

转载自blog.csdn.net/qxyloveyy/article/details/104908238