python之网络编程
来源:互联网 发布:淘宝图片像素要求 编辑:程序博客网 时间:2024/06/07 01:20
一、TCP/IP简介
(摘录自百度百科)
1. TCP/IP协议
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。
2.TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。
从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。
TCP/IP协议并不完全符合OSI的七层参考模型,OSI(Open System Interconnect)是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层)。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于ARPANET的设计者注重的是网络互联,允许通信子网(网络接口层)采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。
注意tcp本身不具有数据传输中噪音导致的错误检测功能,但是有实现超时的错误重传功能;
二、TCP编程
#SocketTcpServer.py import socketimport threadingimport time# 创建一个sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(('127.0.0.1', 9999))s.listen(5)print('TCPServer is waiting for connection...')def tcplink(sock, addr): print('Accept new connection from %s:%s...' % addr) sock.send(b'Welcome!') while True: data = sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8') == 'exit': break sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8')) sock.close() print('Connection from %s:%s closed.' % addr)while True: # 接受一个新连接: sock, addr = s.accept() # 创建新线程来处理TCP连接: t = threading.Thread(target=tcplink, args=(sock, addr)) t.start()
#SocketTcpClient.pyimport sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立连接:s.connect(('127.0.0.1', 9999))# 接收欢迎消息:print(s.recv(1024).decode('utf-8'))for data in [b'Jaber', b'Katy', b'Betty', b'huangxin']: # 发送数据: s.send(data) print(s.recv(1024).decode('utf-8'))s.send(b'exit')s.close()
#server(未连接时的状态)"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/HomeWorkByNetwork/SocketTcpServer.pyTCPServer is waiting for connection...#server(连接成功后的状态)"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/HomeWorkByNetwork/SocketTcpServer.pyTCPServer is waiting for connection...Accept new connection from 127.0.0.1:55380...Connection from 127.0.0.1:55380 closed.#client"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/HomeWorkByNetwork/SocketTcpClient.pyWelcome!Hello, Jaber!Hello, Katy!Hello, Betty!Hello, huangxin!Process finished with exit code 0
三、UDP编程
#SocketUcpServer.pyimport sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定端口:s.bind(('127.0.0.1', 8888))print('Bind UDP on 8888...')while True: # 接收数据: data, addr = s.recvfrom(1024) print('Received from %s:%s.' % addr) s.sendto(b'Hello, %s!' % data, addr)
#SocketUcpClient.pyimport sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)for data in [b'Michael', b'Tracy', b'Sarah']: # 发送数据: s.sendto(data, ('127.0.0.1', 8888)) # 接收数据: print(s.recv(1024).decode('utf-8'))s.close()
#server(未连接时的状态)"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/HomeWorkByNetwork/SocketUdpServer.pyBind UDP on 8888...#server(连接成功后的状态)"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/HomeWorkByNetwork/SocketUdpServer.pyBind UDP on 8888...Received from 127.0.0.1:52492.Received from 127.0.0.1:52492.Received from 127.0.0.1:52492.#client"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/HomeWorkByNetwork/SocketUdpClient.pyHello, Michael!Hello, Tracy!Hello, Sarah!Process finished with exit code 0
- Python之网络编程
- python之网络编程
- Python之网络编程
- python之网络编程
- Python网络编程之medusa
- Python网络编程之medusa
- Python笔记之网络编程
- Python 网络之TCP编程
- Python 网络编程之UDP
- python网络编程之TCP
- python网络编程之UDP
- python之socket网络编程
- python网络编程之udp
- Python编程基础之十五网络编程
- python 网络编程之 TCP编程
- python 网络编程之 UDP编程
- python网络编程之TCP实现
- python网络编程之UDP实现
- 【运维】Dell R710如何做Raid0与Raid5
- CentOS上用Squid搭建HTTP代理小结
- Python格言
- PARTICULAR OBJECT RETRIEVAL WITH INTEGRAL MAX-POOLING OF CNN ACTIVATIONS阅读笔记
- java基础系列(三)
- python之网络编程
- U-Boot中PING命令处理流程之一
- node.js 安装及配置
- 实战Java高并发程序设计学习路线
- C语言程序设计学习日志(一)
- ping命令执行过程一
- bzoj2882 工艺(后缀自动机(最小表示法))
- 一个简单c语言程序框架(推荐)
- (十二)Object和String