python省略考点补充1(斐波拉数列+TCP+UDP)

知识点1 求斐波拉契数列的第100项是多少?

def f(x):
    a=1
    b=1
    
    if x==1:
        return 1
    elif x==2:
        return 1
    else:
        for i in range(x-2):
            c=a+b
            a=b
            b=c
        return c
f(100)

知识点2 tcp通信

1.客户端

import threading
import socket
#接收方法
def recvmsg(sock):
    while 1:
        try:
            data=sock.recv(1024)
            print(data.decode("UTF-8"))
            #保证发送不为空
            if(data==""):
                break
        except  ConnectionResetError as e:  #避免连接中断
            break
            
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  
sock.connect(("127.0.0.1",5003))     #连接服务器
t=threading.Thread(target=recvmsg,args=(sock,))  #创建一个接收线程
t.start()      
while 1
    ss=input()  
    sock.send(ss.encode("UTF-8"))   #将字符串转化为utf-8字符

2.服务器

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #创建一个套接字
addr=("0.0.0.0",5003)   
s.bind(addr)   #绑定地址和端口号
s.listen(128)   #监听
while 1:
    s2,addr2=s.accept()    #等待连接
    print(s2,addr2,"connet to me!")
    while 1:              #等待接收
        try:
            data=s2.recv(1024)   
            if data:
                print(data.decode("UTF-8")) 
            else:
                break
        except ConnectionResetError as e:
            break
            

3.易错点

1.s.connect 使用的是(( ))
2.服务器需要 s.listen(128) s.accept() 监听
3.发送和接收的方法 s.send s.accept
4.套接字的申请 socket.socket(socket.AF_INET,socket.SOCK_stream)
5.创建线程 treading.Tread(target=recv,args=(s,))

知识点3 udp通信

#1.发送方
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  #1.创建套接字
addr=("127.0.0.1",5001)                            #2.发送地址
while 1:                                          #3.循环输入发送信息
    txt=input("请输入要发送的消息:")             #4.编码发送
    s.sendto(txt.encode("utf-8"),addr)
    

#2.接收方
import socket                        
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  #1.创建套接字
s.bind(("0.0.0.0",5001))                           #2.绑定接收端口
while 1:                                          #3.接收消息并解码
    data,addr=s.recvfrom(1024)                  
    print(data.decode("UTF-8"))

3.易错点

1.创建套接字 socket.socket(socket.AF_INET,socket.DGRAM)
2.s.bind 绑定的时候使用双引号
3.encode()编码 decode()解码
4.s.sendto(“信息”,“地址”)

发布了122 篇原创文章 · 获赞 221 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/jjsjsjjdj/article/details/103543684