socket接收的消息怎么更新到页面_Python网络编程常见问题socket基础

客户端/服务器架构

1、即C/S架构

客户端/服务器架构就是C/S架构,包括两种:
(1)硬件C/S架构(打印机)
(2)软件C/S架构(web服务)

2、C/S架构与socket的关系

学习socket就是为了完成C/S架构的开发

3、两机交互的原理

82892393ca42c7c2ae55b66bd4644bd5.png

Socket编程

1、socket编程的概念

Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)

套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行,Linux所提供的功能(如打印服 务,ftp等)通常都是通过套接字来进行通信的,套接字的创建和使用与管道是有区别的,因为套接字明确地将客户和服务器区分出来,套接字可以实现将多个客 户连接到一个服务器。

socket在网络传输中的位置:

2c60c456c84b311ddd325db1f18c1220.png

2、socket的两种类型

它们都遵循两种协议: tcp协议和udp协议

流式Socket(STREAM): 是一种面向连接的Socekt,针对面向连接的TCP服务应用,安全,但是效率低数据报式Socket(DATAGAM): 是一种无连接的Socket,对应于无连接的UDP服务应用。不安全(易丢失,顺序混乱,在接受端要分析重排及要求重发),但效率高

3、socket的运行流程

e1900393350f75a85f4771bcd80a0223.png

解释:
在传输层与应用层之间有一个socket抽象层
我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循scoket的规定去编程,写出的程序自然就是遵循tcp/udp标准的程序

4、socket = ip + port

IP是用来表示互联网中一台主机的位置,而port是用来表示这台机器上的一个应用程序;
IP地址是配置到网卡上的,而port是应用程序开启的;
所以IP与port的绑定就标识了互联网中独一无二的一个应用程序

5、socket实现的交流

服务端代码:

import socket  #服务端导入socket模块phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #用socket实例化一个对象phone#AF_TNET代表是基于网络传输;SOCK_STREAM代表遵循tcp协议phone.bind(('192.168.43.247',8000))  #表明绑定一个端口,ip地址为本机ip地址phone.listen(5)  #监听;5表示最大可以挂起5个链接,多余的会在后面排队print('-------->line1')  #直接运行服务端会卡在这里等对方的链接conn,addr = phone.accept()  #获取对方的链接和号码print('-------->line2')#收消息msg = conn.recv(1024)  #接收对方的链接,接收1024字节的信息print('客户端发来的消息是:',msg)#发消息conn.send(msg.upper())  #把发来的消息以大写的方式返回给客户端#conn.send(msg)  #把消息发送出去conn.close()  #发送完了就关闭链接phone.close()  #再关闭整个phone,即整个socker对象1234567891011121314151617181920212223

客户端代码:

import socket  #客户端也要导入socket模块phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #基于网络;遵循tcp协议phone.connect(('192.168.43.247',8000))  #接通服务端,接通的就是对方绑定的元组;这里使用的IP地址便为你自己电脑的IP地址#发消息phone.send('Hello'.encode('utf-8'))  #网络传输是二进制形式,所以要编码成二进制进行传输#127.0.0.1#conn,addr = phone.accept()#客户端不需要再获取对方的链接和号码#收消息msg = phone.recv(1024)  #直接用phone.recv来接收消息print('服务端传回来的消息是:',msg)12345678910111213141516

运行服务端:

8b072306120fcdb65b153bebe376471e.png


可以看到光标在跳动,等待客户端发送的消息…所以我们接下运行客户端:

766a3459c065362c09641c80d2fd220c.png


发现服务端成功接收到了消息…同时客户端也接收到了服务端加工过的消息:

751fe415a91c5ddfbb64321560f6c1c4.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值