部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >19 Python 基础: 重点知识点--网络通信基础知识讲解

19 Python 基础: 重点知识点--网络通信基础知识讲解

作者头像
野原测试开发
发布于 2019-07-30 03:36:42
发布于 2019-07-30 03:36:42
1.1K00
代码可运行
举报
文章被收录于专栏:技术探究技术探究
运行总次数:0
代码可运行

前言

其他文章均已发表,可通过 “技术专栏 -- Python -- PY基础” 进行阅读。

这是 “Python 基础”系列的第 19 篇文章 ,共 20 篇 。 01 Python 基础:Python入门必看之语法基础 02 Python 基础:列表及字典内置函数&方法内容梳理 03 Python 基础:Python函数及递归函数知识点梳理 04 Python 基础:讲解迭代、过滤、匿名函数、排序算法四大知识点 05 Python 基础:高阶函数学习实践 06 Python 基础:难点装饰器的学习介绍及实现赌博收益小案例 07 Python 基础:重点知识点函数的参数难点解答 08 Python 基础:面试问你类与实例及其属性还不会吗 09 Python 基础:手把手带你梳理对象、继承与多态知识点 10 Python 基础:如何定制类,这里有答案 11 Python 基础:知识巩固,实现一个简易学生管理系统 12 Python 基础:如何优化代码质量,错误、调试和测试你必须要懂 13 Python 基础:模块的概念及使用方法并着重介绍两个常用模块 14 Python 基础:重点知识点--IO编程 15 Python 基础:程序猿必懂知识之正则表达式 16 Python 基础:重点知识点--Pygame的基础知识梳理 17 Python 基础:重点知识点--Pygame实现儿时经典游戏坦克大战 18 Python 基础:重点知识点--进程和线程概念、应用知识梳理 19 Python 基础:重点知识点--网络通信基础知识讲解 20 Python 基础:重点知识点--网络通信进阶知识讲解

目录

19 Python 基础: 重点知识点--网络通信基础知识讲解,共有 5 部分:

  • 网络通信--网络通信概述
  • 网络通信--IP
  • 网络通信--socket
  • 网络通信--UDP网络程序
  • 网络通信--TCP编程

网络通信--网络通信概述

概述

美国国防部认为,如果仅有一个集中的军事指挥中心,万一这个中心被原苏联的核武器摧毁。全国的军事指挥将处于瘫痪状态,其后果将不堪设想,因此有必要设计这样一个分散的指挥系统──它必须由一个个分散的指挥点组成,当部分指挥点被摧毁后其它点仍能正常工作,而这些分散的点又能通过某种形式的通讯网取得联系。

1969年,美国国防部高级研究计划管理局( ARPA - - Advanced Research Projects Agency )开始建立一个命名为ARPAnet的网络, 把美国的几个军事及研究用电脑主机联接起来。当初,ARPAnet只联结4台主机,从军事要求上是置于美国国防部高级机密的保护之下,从技术上它还不具备向外推广的条件。Internet。

1986年,美国国家科学基金会(National Science Foundation,NSF)利用ARPAnet发展出来的TCP/IP通讯协议,在5 个科研教育服务超级电脑中心的基础上建立了NSFnet广域网。由于美国国家科学基金会的鼓励和资助,很多大学、政府资助的研究机构甚至私营的研究机构纷纷把自己的局域网并入NSFnet中。那时,ARPAnet 的军用部分已脱离母网,建立自己的网络--Milnet。ARPAnet --网络之父,逐步被NSFnet所替代。到1990年, ARPAnet已退出了历史舞台。如今,NSFnet已成为Internet的重要骨干网之一。

1989年,由CERN开发成功WWW,为Internet 实现广域超媒体信息截取/检索奠定了基础。

在90年代以前,Internet的使用一直仅限于研究与学术领域,商业性机构进入Internet一直受到这样或那样的法规或传统问题的困扰。事实上,象美国国家科学基金会等曾经出资建造Internet的政府机构对Internet上的商业活动并不感兴趣。

tcp/ip简介

image.png

作为新时代标杆的我们,已经离不开手机、离不开网络,对于互联网大家可能耳熟能详,但是计算机网络的出现比互联网要早很多

1. 什么是协议

有的说英语,有的说中文,有的说德语,说同一种语言的人可以交流,不同的语言之间就不行了

为了解决不同种族人之间的语言沟通障碍,现规定国际通用语言是英语,这就是一个规定,这就是协议

2. 计算机网络沟通用什么

现在的生活中,不同的计算机只需要能够联网(有线无线都可以)那么就可以相互进行传递数据

那么不同种类之间的计算机到底是怎么进行数据传递的呢?

就像说不同语言的人沟通一样,只要有一种大家都认可都遵守的协议即可,那么这个计算机都遵守的网络通信协议叫做TCP/IP协议

3. TCP/IP协议(族)

早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容

为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准。

因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,大家把互联网的协议简称TCP/IP协议

常用的网络协议如下图所示:

说明:

  • 网际层也称为:网络层
  • 网络接口层也称为:链路层

端口

1. 什么是端口

那么TCP/IP协议中的端口指的是什么呢?

端口就好一个房子的门,是出入这间房子的必经之路。

如果一个进程需要收发网络数据,那么就需要有这样的端口

在linux系统中,端口可以有65536(2的16次方)个之多!

既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号

2. 端口号

端口是通过端口号来标记的,端口号只有整数,范围是从0到65535

3. 端口是怎样分配的

端口号不是随意使用的,而是按照一定的规定进行分配。

端口的分类标准有好几种,我们这里不做详细讲解,只介绍一下知名端口和动态端口

3.1 知名端口(Well Known Ports)

知名端口是众所周知的端口号,范围从0到1023

80端口分配给HTTP服务 21端口分配给FTP服务 可以理解为,一些常用的功能使用的号码是估计的,好比 电话号码110、10086、10010一样

一般情况下,如果一个程序需要使用知名端口的需要有root权限

3.2 动态端口(Dynamic Ports)

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

之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。

动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。

当这个进程关闭时,同时也就释放了所占用的端口号。

3.3 怎样查看端口?

用“netstat -an”查看端口状态

4. 小总结

端口有什么用呢 ?我们知道,一台拥有IP地址的主机可以提供许多服务,比如HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。

网络通信--IP

ip地址

1. 什么是地址

地址就是用来标记地点的

2. ip地址的作用

ip地址:用来在网络中标记一台电脑的一串数字,比如192.168.1.1;在本地局域网上是惟一的。

3. ip地址的分类

每一个IP地址包括两部分:网络地址和主机地址

3.1 A类IP地址

一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,

地址范围1.0.0.1-126.255.255.254

二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

可用的A类网络有126个,每个网络能容纳1677214个主机

3.2 B类IP地址

一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,

地址范围128.1.0.1-191.255.255.254

二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110

可用的B类网络有16384个,每个网络能容纳65534主机

3.3 C类IP地址

一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”

范围192.0.1.1-223.255.255.254

二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110

C类网络可达2097152个,每个网络能容纳254个主机

3.4 D类地址用于多点广播

D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。

它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中

多点广播地址用来一次寻址一组计算机

地址范围224.0.0.1-239.255.255.254

3.5 E类IP地址

以“1111”开始,为将来使用保留

E类地址保留,仅作实验和开发用

3.6 私有ip

在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就

是属于私网IP,不在公网中使用的,它们的范围是:

10.0.0.0~10.255.255.255

172.16.0.0~172.31.255.255

192.168.0.0~192.168.255.255

3.7 注意

IP地址127.0.0.1~127.255.255.255用于回路测试,

如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。

网络通信--socket

socket简介

  1. 本地的进程间通信(IPC)有很多种方式,例如 队列 同步(互斥锁、条件变量等) 以上通信方式都是在一台机器上不同进程之间的通信方式,那么问题来了

网络中进程之间如何通信?

2. 网络中进程之间如何通信

首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!

在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。

其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。

这样利用ip地址,协议,端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互

3. 什么是socket

socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:

它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的

例如我们每天浏览网页、QQ 聊天、收发 email 等等

4. 创建socket

在 Python 中 使用socket 模块的函数 socket 就可以完成:

socket.socket(AddressFamily, Type) 说明:函数 socket.socket 创建一个 socket,返回该 socket 的描述符,该函数带有两个参数:

Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

image.png

网络通信--UDP网络程序

UDP介绍

UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

UDP特点:

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP传输数据时有大小限制,每个被传输的数据包必须限定在64KB之内。UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。

【适用情况】

UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,比如

  • 语音广播
  • 视频
  • QQ
  • TFTP(简单文件传送)
  • SNMP(简单网络管理协议)
  • RIP(路由信息协议,如报告股票市场,航空信息)
  • DNS(域名解释)
  • 注重速度流畅

UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些。

创建一个udp客户端程序的流程是简单,具体步骤如下:

  • 创建客户端套接字
  • 发送/接收数据
  • 关闭套接字

| 下面测试与调试需要用到一个软件,网络调试工具NetAssist.exe(自行百度下载即可): |

| ------------------------------------------------------------ |

| 1.接受信息或则发送消息出去,设置好网络协议、本地ip地址与本地端口号连接即可 |

| 2.设置端口号,是用于接受信息的识别,就是这软件对外的端口号是多少,别人才能把信息发到你软件上 |

| 3.设置端口号时,有可能出现端口号已被其他程序占用,所以连接不了,此时更换端口号即可 |

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding=utf-8
#实现udp套接字发送数据出去到对应ip地址与端口号上

from socket import *

#1. 创建套接字
udpSocket = socket(AF_INET, SOCK_DGRAM)#SOCK_DGRAM表示UDP协议,AF_INET表示ipv4协议,基本都是这个的ipv4

#2. 准备接收方的地址

sendAddr = ('192.168.8.213', 7777)

#3. 从键盘获取数据
sendData = input("请输入要发送的数据:")

#4. 发送数据到指定的电脑上,实例化udpSocket中有个sengto方法
#第一个参数是二进制对象,要将字符串转换为二进制对象,需要使用encode方法,根据对方接收什么编码,进行解码。
udpSocket.sendto(sendData.encode('gbk'), sendAddr)

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

image.png

image.png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##创建udp网络程序-接收数据
#coding=utf-8

from socket import *

#1. 创建套接字
udpSocket = socket(AF_INET, SOCK_DGRAM)

#2. 准备接收方的地址
sendAddr = ('192.168.8.213', 7777)

#3. 从键盘获取数据
sendData = input("请输入要发送的数据:")

#4. 发送数据到指定的电脑上
udpSocket.sendto(sendData.encode('gbk'), sendAddr)

#5. 等待接收对方发送的数据
recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数

#6. 显示对方发送的数据
# print(recvData),打印出来可以得到他是一个元组,所以下面写为打印更加详细具体
#将二进制对象转为字符串,这个时候用decode(),根据对方用什么编码,你就用什么解码
print('发送方%s,端口号%s:%s'%(recvData[1][0],recvData[1][1],recvData[0].decode('gbk')))

#7. 关闭套接字
udpSocket.close()

image.png

image.png

image.png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#udp绑定端口号
#coding=utf-8

from socket import *

#1. 创建套接字
udpSocket = socket(AF_INET, SOCK_DGRAM)

#2. 绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配

bindAddr = ('', 6666) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip

udpSocket.bind(bindAddr)

n = 10
while n>0:
    #3. 等待接收对方发送的数据
    recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数

    #4. 显示接收到的数据
    print('发送方%s,端口号%s:%s'%(recvData[1][0],recvData[1][1],recvData[0].decode('gbk')))
    n= n-1

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

image.png

同时运行下面两个就可以实现一个发送一个接收,打开两个进程同时

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#循环发送
#coding=utf-8

from socket import *

#1. 创建套接字
udpSocket = socket(AF_INET, SOCK_DGRAM)#UDP协议

#2. 准备接收方的地址

sendAddr = ('192.168.8.213', 6666)
bindAddr = ('', 7777) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip
#发送方也可以绑定
udpSocket.bind(bindAddr)


while True:
    #3. 从键盘获取数据
    sendData = input("请输入要发送的数据:")

    #4. 发送数据到指定的电脑上
    #第一个参数是二进制对象,要将字符串转换为二进制对象,需要使用encode方法,根据对方接收什么编码,进行解码。
    udpSocket.sendto(sendData.encode('gbk'), sendAddr)
    recvData = udpSocket.recvfrom(1024)
    print('发送方%s,端口号%s:%s'%(recvData[1][0],recvData[1][1],recvData[0].decode('gbk')))

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

image.png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#udp绑定端口号
#coding=utf-8

from socket import *

#1. 创建套接字
udpSocket = socket(AF_INET, SOCK_DGRAM)

#2. 绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配

bindAddr = ('', 6666) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip

udpSocket.bind(bindAddr)

n = 10
while n>0:
    #3. 等待接收对方发送的数据
    recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数

    #4. 显示接收到的数据
    print('发送方%s,端口号%s:%s'%(recvData[1][0],recvData[1][1],recvData[0].decode('gbk')))
    s = '服务器已收到了:%s'%recvData[0].decode('gbk')
    print( type(recvData[1][0]))
    print(recvData[1][1])
    udpSocket.sendto(s.encode('gbk'),(recvData[1][0],recvData[1][1]))
    n= n-1

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

image.png

image.png

image.png

网络通信--TCP编程

udp通信模型

udp通信模型中,在通信开始之前,不需要建立相关的链接,只需要发送数据即可,类似于生活中,"写信""

image.png

tcp通信模型

tcp通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,"打电话""

image.png

image.png

tcp服务器

案例:生活中的电话机

如果想让别人能更够打通咱们的电话获取相应服务的话,需要做一下几件事情:

  1. 买个手机
  2. 插上手机卡
  3. 设计手机为正常接听状态(即能够响铃)
  4. 静静的等着别人拨打

tcp服务器:如同上面的电话机过程一样,在程序中,如果想要完成一个tcp服务器的功能,需要的流程如下:

  1. socket创建一个套接字
  2. bind绑定ip和port
  3. listen使套接字变为可以被动链接
  4. accept等待客户端的链接
  5. recv/send接收发送数据 一个很简单的tcp服务器如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding=utf-8from socket import *# 创建TCPsocket服务器,socket的第二个参数,sock_stream,   %%SOCK_DGRAM表示UDP协议%%tcpSerSocket = socket(AF_INET, SOCK_STREAM)
# 绑定本地信息address = ('192.168.132.1', 6777)tcpSerSocket.bind(address)# tcpSerSocket.bind(('',7788))# 使用socket创建的套接字默认的属性是主动的,使用listen将其变为被动的,这样就可以接收别人的链接了
tcpSerSocket.listen(5)       # 数字表示最多同时连接或接受多少个用户链接,最大可连接客户端数# 如果有新的客户端来链接服务器,那么就产生一个新的套接字专门为这个客户端服务器
# newSocket用来为这个客户端服务
# tcpSerSocket就可以省下来专门等待其他新客户端的链接#新端口连接好了,你要获取这个连接的管道,那么你需要解构accept的返回值print('-----等待客户端连接进来-----')newSocket, clientAddr = tcpSerSocket.accept()print(newSocket)print(clientAddr)print('-----客户端已连接进来')
# 接收对方发送过来的数据,最大接收1024个字节print('-----等待获取客户端的消息-----')recvData = newSocket.recv(1024)print ('接收到的数据为:',recvData.decode('gbk'))
# 发送一些数据到客户端newSocket.send(b"thank you !")
# 关闭为这个客户端服务的套接字,只要关闭了,就意味着为不能再为这个客户端服务了,如果还需要服务,只能再次重新连接newSocket.close()# 关闭监听套接字,只要这个套接字关闭了,就意味着整个程序不能再接收任何新的客户端的连接tcpSerSocket.close()

image.png

image.png

image.png

tcp客户端

tcp客户端,并不是像之前一个段子:一个顾客去饭馆吃饭,这个顾客要点菜,就问服务员咱们饭店有客户端么,然后这个服务员非常客气的说道:先生 我们饭店不用客户端,我们直接送到您的餐桌上.

如果,不学习网络的知识是不是 说不定也会发生那样的笑话 ,哈哈.

所谓的服务器端:就是提供服务的一方,而客户端,就是需要被服务的一方.

tcp客户端构建流程

tcp的客户端要比服务器端简单很多,如果说服务器端是需要自己买手机、查手机卡、设置铃声、等待别人打电话流程的话,那么客户端就只需要找一个电话亭,拿起电话拨打即可,流程要少很多.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding=utf-8
from socket import *

# 创建socket,Tcpshock创建
tcpClientSocket = socket(AF_INET, SOCK_STREAM)

# 链接服务器
serAddr = ('192.168.132.1', 6777)
#请输入服务端的IP地址
# serverIp = input('请输入服务端的IP地址:')
# serverPort = int(input('请输入服务器的端口号:'))

# serAddr = (serverIp,serverPort)
#拨打电话,连接服务端
tcpClientSocket.connect(serAddr)

# 提示用户输入数据
sendData = input("请输入要发送的数据:")

tcpClientSocket.send(sendData.encode('gbk'))

# 接收对方发送过来的数据,最大接收1024个字节
recvData = tcpClientSocket.recv(1024)
print ('接收到的数据为:',recvData.decode('gbk'))

# 关闭套接字,挂电话
tcpClientSocket.close()

image.png

应用:模拟QQ聊天

客户端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fromsocketimport*

#创建socket
tcpClientSocket=socket(AF_INET,SOCK_STREAM)

#链接服务器,设定ip地址与端口号
serAdrr=('192.168.8.187',7788)
tcpClientSocket.connect(serAdrr)

whileTrue:

#提醒用户输入数据:
sendData=input('send:')

ifsendData=='exitServer':
print('退出连接')
break
eliflen(sendData)>0:
tcpClientSocket.send(sendData.encode('gbk'))
else:
print('退出连接')
break

#接受对方发送数据,最大为1024个字节
recvData=tcpClientSocket.recv(1024)
print('recv:',recvData.decode('gbk'))

#关闭套接字
tcpClientSocket.close()

服务器端

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding=utf-8
fromsocketimport*

#创建socket
tcpSerSocket=socket(AF_INET,SOCK_STREAM)

#绑定本地信息
address=('',7788)
tcpSerSocket.bind(address)

#使用socket创建的套接字默认的属性是主动的,使用listen将其变为被动的,这样就可以接收别人的链接了
tcpSerSocket.listen(5)

whileTrue:
#一个循环服务1个客户
#如果有新的客户端来链接服务器,那么就产生一个信心的套接字专门为这个客户端服务器
#newSocket用来为这个客户端服务
#tcpSerSocket就可以省下来专门等待其他新客户端的链接
print('------等待客户连接------')
newSocket,clientAddr=tcpSerSocket.accept()
print('------新客户已连接')
whileTrue:

#接收对方发送过来的数据,最大接收1024个字节
recvData=newSocket.recv(1024)
print(recvData)
#如果接收的数据的长度为0,则意味着客户端关闭了链接
ifrecvData==b'exitserver':
print('客户已完成服务,退出')
break
eliflen(recvData)>0:
print('recv:',recvData.decode('gbk'))
else:
print('客户已完成服务,退出')
break


#发送一些数据到客户端
#sendData=input("send:")
sendDate='服务端已收信息:%s'%recvData.decode('gbk')
newSocket.send(sendDate.encode('gbk'))

#关闭为这个客户端服务的套接字,只要关闭了,就意味着为不能再为这个客户端服务了,如果还需要服务,只能再次重新连接
newSocket.close()

#关闭监听套接字,只要这个套接字关闭了,就意味着整个程序不能再接收任何新的客户端的连接
tcpSerSocket.close()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 离不开的网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AI 写作(九)实战项目二:智能新闻报道(9/10)
在当今信息爆炸的时代,新闻传播行业正面临着前所未有的挑战与机遇。随着科技的飞速发展,人们获取信息的渠道日益多样化,对新闻的时效性、准确性和个性化需求也不断提高。在这样的背景下,AI 写作在智能新闻报道中的重要性愈发凸显。
正在走向自律
2024/12/18
2650
AI 写作(九)实战项目二:智能新闻报道(9/10)
AI写作(十)发展趋势与展望(10/10)
在当今科技飞速发展的时代,AI 写作如同一颗耀眼的新星,迅速崛起并在多个领域展现出强大的力量。
正在走向自律
2024/12/18
1640
AI写作(十)发展趋势与展望(10/10)
增强网站易用性的10个设计技巧
易用性就是是你的网站对用户来说使用更简单,能够让用户在他需要的地方很快找到需要的信息。类比于Google所提倡的”让用户呆在Google的时间不短缩短“,对于网站来说,我们不是减少用户在网站的停留时间,而是缩短用户寻找关键信息和向导的时间。
大江小浪
2018/07/24
6500
增强网站易用性的10个设计技巧
如何快速让自己的文章被百度收录
网站编辑网站内容的设计师和建设者,通过网络对信息进行收集、分类、编辑、审核,然后通过网络向世界范围的网民进行发布,并且通过网络从网民那里接收反馈信息,产生互动。网络编辑是指利用相关专业知识及计算机和网络等现代信息技术,网站编辑的四个特点:超文本链接式编辑、全时化编辑、数据库化编辑、交互性编辑。
大葡萄
2018/09/05
1.8K0
如何快速让自己的文章被百度收录
AI综述专栏 | 写作机器人综述
人工智能技术(AI)内容生成或者辅助内容生产这件事上,目前有几个典型场景应用类型,生成文章、内容创作辅助工具、生成短文本、写诗、写摘要等,目前市面上已经有不少相关领域的公司,在不同角度探索,而且产生了一定的成绩。
马上科普尚尚
2020/05/14
2K0
ChatGPT已经慢了,这是国内AI搜索新高度,免费可用
最近几天,谷歌、微软等老牌搜索巨头们的压力陡增!原来,向他们发起挑战的 AI 搜索领域「战火重燃」。
机器之心
2025/02/14
950
ChatGPT已经慢了,这是国内AI搜索新高度,免费可用
智能写作v2.0
近年随着算力和数据科学的发展,不少文科开始出现「计算XX学」的分支,跟写作相关的比如,计算文学、计算语言学、计算美学。本文大量的工作基于《人工智能写作指南v1.0》,结合近些年作者的实践研究及国内外行业进展,整理而成,主要包括知识点、产品、技术栈等内容。
mixlab
2020/04/27
3.7K1
人工智能写作指南v1.0
这是一个机器人写稿的时代,智能写手应用的行业涉及非常广,有新闻业、媒体业、广告业、自媒体行业等等,跟文字生产有关的都有所应用。
mixlab
2019/03/14
5.3K0
人工智能写作指南v1.0
AI生成不同的自媒体文案实践:探索无限可能
在当今数字化时代,自媒体已经成为人们表达观点、分享信息和创造个人品牌的重要平台。而随着人工智能(AI)技术的不断发展,AI在自媒体文案创作方面展现出了巨大的潜力。无论是社交媒体上引人入胜的短文案,还是深度长文,AI都能为自媒体创作者提供有效的辅助和全新的创作思路。本文将深入探讨AI生成不同类型自媒体文案的实践方法、优势、局限性以及如何更好地利用这一技术。
Front_Yue
2025/04/07
1660
AI生成不同的自媒体文案实践:探索无限可能
AI 写作(八)实战项目一:自动写作助手(8/10)
在互联网普及的今天,人们对写作的需求呈现出前所未有的多样化态势。无论是学术论文、新闻报道,还是社交媒体的动态更新、网络小说的创作,都离不开高质量的写作。以学术研究为例,学者们需要撰写严谨的论文来阐述自己的研究成果,这不仅要求语言准确、逻辑严密,还需要大量的文献引用和数据分析。而对于新闻工作者来说,快速、准确地报道时事新闻是他们的首要任务,这就需要在短时间内创作出简洁明了、富有吸引力的新闻稿件。此外,社交媒体的兴起使得每个人都成为了内容创作者,人们希望通过精彩的文字来展示自己的生活、观点和创意。然而,传统的写作方式往往需要耗费大量的时间和精力,从构思、收集资料到撰写、修改,每一个环节都可能面临着各种挑战。面对如此繁重的写作任务,很多人常常感到力不从心,迫切需要一种更加高效、便捷的写作方式。
正在走向自律
2024/12/18
1480
AI 写作(八)实战项目一:自动写作助手(8/10)
他山之石 | 百度知识图谱与多模内容创作实践
由于大数据时代的发展,知识呈指数级增长,而知识图谱技术又在近年来逐步火热,因此诞生了利用知识图谱技术进行智能创作的新想法。本文将分享基于知识图谱的多模内容创作技术及应用。主要包括以下四大部分:
NewBeeNLP
2022/11/11
9330
他山之石 | 百度知识图谱与多模内容创作实践
博客如何起手:手把手教学[免费送博客发帖的模板]
你可能已经听说过博客对营销的成功是多么的重要。但同样重要的是,了解如何创建博客并为其撰写博客文章以便每篇文章都能助力你的工作。
iCDO互联网数据官
2018/09/30
1.2K0
博客如何起手:手把手教学[免费送博客发帖的模板]
百度NLP | 智能写作机器人:不抢人类饭碗,我们只想人机协作
百度NLP专栏 作者:百度NLP 2016 年,百度全面发力内容生态领域,借助人工智能 (AI)、自然语言处理 (NLP)、深度学习 (Deep Learning) 等技术和百万级别的用户标签,推出个性化信息资讯流,与此同时,百度战略级产品「百家号」2017 年预计将向内容生产者分成 100 亿,以此鼓励个人和机构入驻参与内容创作。 而在众多内容生产者之中,一位特殊的「作者」显得格外引人瞩目——那就是在去年上线的百度智能写作机器人(Writing-bots)。据了解,目前百度智能写作文章可涵盖社会、财经、娱
机器之心
2018/05/07
1.7K0
百度NLP | 智能写作机器人:不抢人类饭碗,我们只想人机协作
博客生成静态站点工具 Top 20
本文将介绍最流行的十大博客静态站点生成工具,以 Github star 数来排名。
恋喵大鲤鱼
2023/03/10
4K0
腾讯新闻推荐架构升级:2 年、 300w行代码的涅槃之旅
程序员最大的幸福是看到自己的代码跑在千万人的设备上,程序员最大的不幸是去维护千万人设备背后的老代码。腾讯新闻,是一个有着十多年历史、海量用户规模的经典业务,其背后的系统走过了门户时代,走到了推荐算法时代。 随着时间的推演,老旧架构面临着那些经典的问题:可用性差,服务不稳定;扩展性差,开发周期长,迭代效率低;200 多个代码仓库,300 多万行代码,编程语言、协议混用…… 叠加上推荐算法的时代命题,如何对腾讯新闻的推荐架构做升级成了业务进一步发展的内在要求。本文从业务场景介绍入手,详细介绍了腾讯新闻推荐架构升级过程中的目标设定,架构设计和实践过程,值得仔细品阅,转发点赞收藏一键三连。
腾讯云开发者
2024/06/06
7241
腾讯新闻推荐架构升级:2 年、 300w行代码的涅槃之旅
2018年最值得关注的11个网页开发博客
网络开源和技术创新使得Web开发领域正在迅速变化,网络开发技术迭代更新也非常快速。网络时代,所谓的“专家”通常都是善于学习的那一批人。因此,随时关注和跟进行业最新状态对于网页开发者来说应该是一项充满挑战性也是必须的工作。
奔跑的小鹿
2019/01/24
5700
2018年最值得关注的11个网页开发博客
AI 写作(一):开启创作新纪元(1/10)
在当今数字化高速发展的时代,AI 写作正以惊人的速度重塑着创作格局。AI 写作在现代社会中占据着举足轻重的地位,发挥着不可替代的作用。
正在走向自律
2024/12/18
1860
AI 写作(一):开启创作新纪元(1/10)
搜索结果质量评估(上)
【废话少说—文章思路】 1.引言 如果说以前的传统报刊、搜索引擎、门户网站等媒介解决的是信息不对称的矛盾,那么现在我们面临的矛盾是信息过载的问题。 无疑,解决信息不对称这项工作意义非常巨大,通过传统纸质媒介走向互联网PC端的搜索途径,是用户对于获取大量数据的需求驱动的结果。智能手机的发展再次刺激用户对于获取更多信息、更容易获得信息需求的升级,于是相较传统PC端搜索引擎的PGC产出信息的方式,更多的UGC开始萌芽,自媒体玩家开始入局,各个自媒体平台也乘上了UGC的爆发红利,其中微信公众平台、头条号、企鹅号
企鹅号小编
2018/01/12
3.9K0
搜索结果质量评估(上)
5.内容创作的未来:ChatGPT如何辅助写作(5/10)
在信息爆炸的时代,内容创作已成为连接品牌与受众、传递信息与知识、以及塑造文化与观念的重要手段。随着数字媒体的兴起,内容创作的需求日益增长,对创作者的写作速度和质量提出了更高的要求。人工智能(AI)技术的飞速发展为内容创作领域带来了革命性的变化,其中ChatGPT作为一种先进的语言模型,展现出在写作辅助上的显著潜力。
正在走向自律
2024/12/18
1110
5.内容创作的未来:ChatGPT如何辅助写作(5/10)
零成本搭建博客做好SEO优化
如何能让搜索引擎给我们带来免费而源源不断的SEO流量?如何给新建的站做基本的SEO?如何分析老站的流量现状通过一些优化方法来提高SEO流量?如何做关键词研究?如何做网站竞品研究?如何做面向SEO搜索意图的内容创作?本文分享我对本站的SEO优化过程,如果你也心存这些疑问,就让我们开始这段SEO之旅吧。
SEO-juper
2023/11/11
5080
推荐阅读
相关推荐
AI 写作(九)实战项目二:智能新闻报道(9/10)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验