Python网络编程02/基于TCP协议的socket简单的通信

目录

  • Python网络编程02/基于TCP协议的socket简单的通信

    • 1.昨日内容回顾
    • 2.socket
      • 2.1 socket套接字
      • 2.2 基于TCP协议的socket简单通信

Python网络编程02/基于TCP协议的socket简单的通信

1.昨日内容回顾

1.单播:单独联系某一个人
2.广播:给所有人发送消息(群发)
3.比特流:bit就是0101跟水流一样的源源不断的发送01010101
4.以太网协议:将数据进行分组:一组称之为一帧,数据报
        head|data
 head:18字节:源mac地址|目标mac地址|数据类型
 data:最少46个字节,最多是1500个字节
5.mac地址:就是计算机网卡上记录的地址,世界上所有的计算机独一无二的标识,用于局域网内广播(单播)时查找的计算机位置
6.交换机:分流连接计算机的作用
7.路由器:家用路由器,企业版路由器
8.交换机的mac学习功能:
    第一次发送消息广播的形式,当学习记录表是上的端口与mac地址对应关系之后,再发送消息,是以单播的形式
    端口1:  1C-5F-4B-3E-35-2C
    端口2:  1C-5F-4B-6E-35-2C
9.广播风暴: 所有的计算机都在广播的形式发送消息.
10.P协议: 四段分十进制
    172.168.0.1
子网掩码:
    A: 255.0.0.0
    B: 255.255.0.0
    C: 255.255.255.0
11.路由器:
    外网(公网)IP,
    内网(局域网)IP 都是假的,
    DHCP协议: 路由器自动分发的IP地址,网关等等.
    端口: 0~1023系统的, 自己选取端口8080 以后都可以.
12.ARP协议:通过IP地址获取计算机mac地址
13.TCP协议:面向链接的协议,流式协议,安全可靠效率低的协议,传输文件,浏览器等
14.UDP协议:用户数据报协议,效率高,不可靠协议,微信  

2.socket

2.1 socket套接字

1.socket是处于应用层与传输层之间的抽象层,它是一组操作起来非常简单的接口(接收数据)此接口接收数据后,交由操作系统
2.为什么存在socket抽象层
    如果直接与操作系统交互非常麻烦,繁琐,socket对这些繁琐的操作高度的封装,简化
3.socket在Python中就是一个模块

2.2 基于TCP协议的socket简单通信

  • 客户端(client)

    import socket
    # 买电话
    phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #拨打电话号码
    phone.connect(("127.0.0.1",8888))
    
    #给客户端发送内容
    date = input("请输入:")
    phone.send(date.encode("utf-8"))
    
    #允许接收服务端至多1024字节
    from_server_date = phone.recv(1024)
    # 打印服务端发过来的消息
    print(f"来自服务端的消息:{from_server_date}")
    
    phone.close()
  • 服务端(server)

    import socket
    #买电话
    #默认基于TCP协议的socket
    phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #绑定电话卡
    phone.bind(("127.0.0.1",8888))  #绑定IP地址和端口
    #开机监听
    phone.listen(5) #服务端可以接收N个链接,但是只能同一时刻回应五个请求.
    
    print(111)
    #等待连接
    conn,addr = phone.accept() #阻塞(等待客户端的连接)
    
    print(conn,addr)# 打印数据传输的通道、客户端的ip 端口,conn代表两条管道
    
    from_client_data = conn.recv(1024) #至多接收1024个字节 阻塞
    #超过1024分批接收
    
    print(f'来自客户端的消息:{from_client_data}') #打印客户端发送的内容
    
    conn.send(from_client_data.upper()) #给客户端发送内容
    
    conn.close() #关闭通道
    
    phone.close()#关机

原文地址:https://www.cnblogs.com/liubing8/p/11366626.html

时间: 2024-10-29 19:11:40

Python网络编程02/基于TCP协议的socket简单的通信的相关文章

学习笔记——网络编程3(基于TCP协议的网络编程)

TCP协议基础 IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议. 使用ServerSocket创建TCP服务器 在两个通信实体没有建立虚拟链路之前,必须有一个通信实体先做出“主动姿态”,主动接收来自其他通信实体的连接请求. Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端Socket连接,如果没有连接,它将一直处于等待状态. ServerSoc

网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服务器进程B1同时为客户进程A1.A2和B2提供服务. Socket概述 ①   所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过“套接字”向网络发出请求或者应答网络请求. ②   Socket是连接运行在网络上的两个程序间的双向通信的端点. ③  

基于TCP协议的socket套接字编程

基于TCP协议的socket套接字编程 一.什么是Socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的. [ 注意:也有

TCP/IP网络编程之基于TCP的服务端/客户端(二)

回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服务端的I/O代码 echo_server.c --while ((str_len = read(clnt_sock, messag, 1024)) != 0) write(clnt_sock, messag, str_len);-- 接着,我们回顾客户端的代码 echo_client.c -- wr

Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)

Android基础入门教程--7.6.2 基于TCP协议的Socket通信(1) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的概念课枯燥无味是吧,不过总有点收获是吧,本节开始我们来研究基于TCP协议的Socket 通信,先来了解下Socket的概念,以及Socket通信的模型,实现Socket的步骤,以及作为Socket服务 端与客户端的两位各做要做什么事情!好的,我们由浅入深来扣这个Socket吧! 1.什么是Socket? 2.Socket通信模型: Socket通信

Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)

Android基础入门教程--7.6.3 基于TCP协议的Socket通信(2) 标签(空格分隔): Android基础入门教程 本节引言: 上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好! 1.运行效果图: 1.先把我们编写好的Socket服务

什么是 socket?简述基于 tcp 协议的套接字通信流程?

Socket的英文原义是"孔"或"插座".通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄, 可以用来实现不同虚拟机或不同计算机之间的通信. 在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. 基于tcp 协议的套接字通信流程: 1). 服务器先用 socket 函数来建立一个套接字,用这个套接字完成通信的监听. 2). 用 bind

python网络编程(通过tcp或者udp协议通信)

1.基于tcp协议传送文件: 客户端: import socketimport osimport jsonimport structclient = socket.socket()client.connect(('127.0.0.1',8080)) # 文件大小file_size = os.path.getsize(r'F:\老男孩Python7期\day32\视频\02TCP发送大文件.mp4') # 文件名字file_name = 'TCP发送大文件.mp4'# 定义一个字典d = { 'f

网络编程socket-采用TCP协议通信

本人最近做毕设期间设计到采用TCP协议通信网络编程,就随便做了个简单通信项目.大概内容:用户端输入用户名和密码,通过socket把传给服务器,经过服务器判断后,再把“用户是否登录成功”的信息传给用户端. 运行示例(codeblocks): 分别编译用户端和服务器项目后,产生两个.exe,再分别运行,即可. 1.先运行server.exe 2.运行client.exe 3.在client.exe窗口输入用户名和密码. 示例 源代码:http://files.cnblogs.com/files/Xb