高级编程之 socker编程

1. 网络基础

1-1. IP地址

1-1-1. 目的:

用来标记网络上的一台电脑

1-1-2. 如何查看IP

window:

ipconfig

Linux:

ifconfig

1-1-3. IP地址分类

1-1-3-1. IPV4(被广泛使用的)
  1. IP协议的版本号是4
  2. 当前再用,目前被广泛应用
  3. IPv4的地址位数为32位(4位字节)
  4. 地址有限,几乎全部耗尽
1-1-3-2. IPV6
  1. IP协议的版本号是6
  2. 实验阶段,作为下一代IP地址
  3. IPv6的地址位数位128位(16位字节)
  4. 号称可以为全世界的每一粒啥子编上一个地址

1-2. 端口(port)

1-2-1. 知名端口

  1. 80端口分配给HTTP服务
  2. 21端口分配给FTP服务
  3. 。范围是从0到1023

1-2-2. 动态端口

动态端口的范围是从1024-65535

2. socker

2-1. socker 基本概念

2-1-1. 简介

TCP/IP协议

TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,即传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

TCP/IP协议模型
模型socker
socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。白话说,socket就是两个节点为了互相通信,而在各自家里装的一部’电话’。

2-2. socker的使用

  1. 创建套接字
  2. 使用套接字收/发数据
  3. 关闭套接字
2-2-1. UDP发送与接收程序

UDP发送数据

import socket

def main():
	# 创建一个UDP套接字
	udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
	udp_socket.sento(b'nihao', ('192168.0.162', 8080)
	# 关闭socker
	udp_socket.close()


if __name__ == '__main__':
	main()

UDP接收数据

  1. 创建套接字
  2. 绑定本地信息(IP和端口)
  3. 接收数据
  4. 打印数据
  5. 关闭套接字
import socket

def main():
	udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 1 创建套接字

	bind_addr = ('',7789) # 不写ip,表示本机的任何一个ip
	udp_socket.bind(bind_addr) # 2 绑定本地信息

	while True:
		recv_data = udp_socketrecvfrom(1024) # 3. 1024 表示本次接收最大字节数

		recv = recv_data[0]
		send_data = recv_data[1]

		print("{}:{}".format(str(send_data), recv.decode('gbk')) # 4. 打印数据

	udp_socket.close() # 5. 关闭套接字

if __name__ == '__main__':
	main()

端口绑定问题
如果程序运行时,没有绑定端口,那么操作系统会自动分配一个端口给程序。而且同意端口,不能用两次。

UDP聊天器

  1. 创建套接字,套接字是可以同时收发数据的
  2. 发送数据
  3. 接收数据
2-3. TCP客户端与服务端

TCP介绍

  • TCP协议,传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议
  • TCP通信需要经过创建连接、数据传送、终止连接三个步骤
  • TCP通信模型中,在通信开始之前,一定要先建立相关连接,才能发生数据

TCP特点

面向连接:

  • 通信双方必须先建立连接才能进行数据的传输

可靠传输:

  • TCP采用发送应答机制
  • 超时重传
  • 错误校验
  • 流量控制和阻塞管理

TCP与UDP区别总给

  1. CP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
  3. UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
  4. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
  5. TCP对系统资源要求较多,UDP对系统资源要求较少。

UDP 通信
UDP 通信
TCP 通信
TCP 通信
TCP 客户端与服务端的定义
服务器端:就是提供服务的一方,而客户端,就是需要被服务的一方

TCP客服端
构建流程:

  1. 创建socket
  2. 链接服务器
  3. 接收数据(最大接收2014字节)
  4. 关闭套接字

TCP服务端

  1. socket创建套接字
  2. bind绑定IP和port
  3. listen使套接字变为可以被动链接
  4. accept等待客户端的连接
  5. recv/send接收发送数据

TCP服务端为多个客户端服务

文件下载器

TCP客户端

  1. 创建套接字
  2. 目的信息 服务器的ip和port
  3. 连接服务器
  4. 输入要下载的文件名称
  5. 发送文件下载请求
  6. 接收对方发送过来的数据
  7. 接收到数据在创建文件、
  8. 关闭套接字

TCP服务端

  1. socket创建套接字
  2. bind绑定IP和port
  3. listen使套接字变为可以被动链接
  4. accept等待客户端的链接
  5. recv/send接收发送数据
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值