知识点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(“信息”,“地址”)