pythonnet

Python基础(十三)网络编程

2019-11-15  本文已影响0人  鹊南飞_

1. 网络编程的基本知识

1. 计算机网络的主要功能
  1. 资源共享
  2. 信息传输和集中处理
  3. 均衡负载和分布处理
  4. 综合信息服务
2. 计算机网络常见类型
  1. 局域网(LAN)
  2. 域域网(MAN)
  3. 广域网(WAN)

Internet可以被视为最大的广域网

OSI参考模型的推荐分层 OSI参考模型和TCP/IP分层模型的大致对应关系
3. IP

IP地址被分为A,B,C,D,E五类

4. 端口

2. Python的基本网络支持

1. 网络模块概述
四层网络模型及其对应的协议 Python标准库中的网络相关模块

3. 基于TCP协议的网络编程

TCP/IP通信协议是一种可靠的网络协议,他在通信的两端各建立一个socket,从而形成虚拟网络链路。一旦建立了虚拟的网络链路,两端的程序就可以通过该链路进行通信了。Python的socket模块为基于TCP协议的网络通信提供了良好的封装,Python使用socket对象来表示两端的通信端口,并通过socket进行网络通信。

1. 使用socket创建TCP服务端
socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)
参数
常用办法1
常用办法2

创建socket的基本步骤:


服务端代码

import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP和端口
s.bind(('127.0.0.1', 20001))
# 设置最大连接数,超过后排队
s.listen(5)

while True:
    # 建立客户端连接
    c, addr = s.accept()
    print(c, addr)
    msg = '连接成功'
    c.send(msg.encode('utf-8'))
    print('发送成功')
    c.close()

客户端代码

import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务
s.connect(('127.0.0.1', 20001))

# 接收数据
msg = s.recv(1024)
# 关闭连接
s.close()
print(msg.decode('utf-8'))


先运行服务端代码,此时并没有输出什么
运行客户端代码,客户端成功接收服务端发过来的数据


服务端输出结果

<socket.socket fd=456, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 20001), raddr=('127.0.0.1', 51315)> ('127.0.0.1', 51315)
发送成功

客户端输出结果

连接成功

4. 基于UDP协议的网络编程

UDP是一种不可靠的网络协议,他在通信实例的两端各建立一个socket。但这两个socket之间并没有虚拟链路,他们只是发送,接收数据报的对象。Python同样使用socket模块来支持UDP协议的通信。

# 创建socket对象
s = socket.socket(socket.SOCK_DGRAM, socket.SOCK_STREAM)
.........
上一篇 下一篇

猜你喜欢

热点阅读