TCP/IP TCP编程服务器/客户端 udp编程服务器/客户端

TCP/IP

ip地址

对应的实际上就是计算机的网络接口,通常是网卡

通讯的时候,双方必须知道对方的一个标识,并且这些标识必须是唯一的,互联网上每个计算机唯一的标识就是IP地址,如果一个计算机连接了多个网络,那么他便有多个ip地址。

就好比两个人需要互相交流,需要知道对方的标识,即对方的名字或者身份证,并且名字唯一的,通过名字就能准确的找到这个人进行交流。

ip协议

IP协议负责把数据从一台电脑通过网络发送到另一台电脑,发送的时候,我们的数据被分割成一小块,一小块的,然后通过IP包发送出去,IP包的特点就是按块发送,它不保证到达也不保证顺序到达。

TCP协议

TCP协议则是建立在IP协议的基础之上的,TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序到达,TCP协议会通过握手建立连接,然后对每个IP包进行编号,确保对方按顺序收到,若是包丢掉了就自动重发。

端口

端口:在两台计算机通信时,只发送IP是不够的,因为一台电脑上可能执行多个网络程序,一个TCP报文来了之后,应该交给哪个程序来处理,这个就需要使用端口号来进行区分,每个网络程序都向操作系统申请了一个唯一的端口号。1024

三次握手与四次挥手

掌握:

TCP/IP协议 IP地址 端口 三次握手四次挥手

三次握手刚好能够创建一个可靠连接。

记住: ip协议,TCP协议,端口,网卡,三次握手与四次挥手

扫描二维码关注公众号,回复: 6728079 查看本文章

三次握手

56145535620

四次挥手

56145541784

TCP编程服务器代码

TCP服务器的书写

import socket 导入模块

创建scocket对象

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

参数一:指定的ip协议 iPv4协议

参数二:指定的tcp协议

创建连接

sock.connect((域名),80)

address地址 ,以元组的形式传递,要求就括号

域名/ip地址 端口号 小于1024端口号是internet标准服务端口

网页的端口 80

STMP服务端口 25

发送请求,要求发送的数据必须是二进制的

sock.send()

读取数据

while 1:

​ date = b“”

​ strb = sock.recv(1024)

if strb == b“”:

​ break

​ date += strb

sock.close()

TCP客户端的编写

导入socket模块

创建socket对象

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

参数一:指定ip协议

参数二:指定tcp协议

绑定地址

元组,ip地址以及端口号

sock.bind(元组)

限制,设置最大连接数

sock.listen(6)

while True:

​ 接收客户端链接

​ s ,address = sock.accept()

s.send(b"world")

udp编程服务器代码

udp服务器

import socke

创建sock对象

sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

参数一:指定ip协议

参数二:指定udp协议

绑定地址,地址包括ip地址及端口号

sock.blind(())

while 1:

​ data,address = sock.recvfrom(1024)

​ sock.sendto(“shoudao”.encode(“utf-8”),address)

udp客户端

创建sock对象

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

参数一:指定ip协议

参数二:指定udp协议

s.sendto(b"hello",(地址))

print(s.recv(1024))

s.close()

发邮件

登录163邮箱 —> 设置 —>POP3/SMTP/IMAP —>客户端授权密码 —>开启 —> 重置授权码

注意: 授权码尽量和邮件的登录密码不同[],将下面的password改为授权码

若要发邮件首先需要知道:

服务器地址,发送邮箱地址,发送邮箱密码,要发送的内容,对方的邮箱地址

关于邮件:标题,发送者

打开服务连接-》登录邮箱-》发送邮件-》退出邮箱

#发邮件的库
import smtplib
#邮件文本
from email.mime.text import MIMEText

#SMTP服务器
SMTPServer = 'smtp.163.com'

#发邮箱的地址
sender = '[email protected]'
#发送者邮箱密码:授权码
password = '1q2w3e'
#设置发送文本的内容
message = 'hello world'

#转为邮件文本
msg = MIMEText(message)
#标题
msg['Subject'] = '来自星星的我'
#发送者
msg['From'] = sender

#收件人
msg['To'] ='[email protected]'

#打开SMTP服务器,端口号一般为25
mailServer = smtplib.SMTP(SMTPServer,25)
#登录邮箱
mailServer.login(sender,password)
#发送邮件
mailServer.sendmail(sender,['[email protected]'],msg.as_string())
#退出邮箱
mailserver.quit()

说明:有时候会被识别为垃圾邮件[其他邮箱都可以用,只要找到授权码即可]

猜你喜欢

转载自blog.csdn.net/weixin_45183510/article/details/93708937