1.默写一下上节课的tcp通讯程序:
server端的程序;
import socket sk=socket.socket() #创建一个socket对象 sk.bind(('127.0.0.1',8090)) #给对象绑定一个ip和端口号 sk.listen() #进行监听 conn,addr=sk.accept()#获取一个客户端的连接,这一步已经完成了三次握手,这一步会产生堵塞 while True: ret=conn.recv(1024).decode('utf-8') #这一步也会产生堵塞 if ret=='bye': break print(ret) info=input('请输入信息:') if ret=='bye': break conn.send(info.encode('utf-8')) conn.close() sk.close()
client端的程序:
import socket sk=socket.socket() sk.connect(('127.0.0.1',8090)) while True: info=input('请输入信息:') if info=='bye': sk.send(b'bye') break info='alex'+info sk.send(info.encode('utf-8')) ret=sk.recv(1024).decode('utf-8') print(ret) if ret=='bye': break sk.close()
2.如果有两个客户端和一个服务器进行通讯(通讯协议选用tcp协议,并且先启动client1,那么client2先发送信息,server可以接受到吗?)
答:接受不到,当client启动之后,client1和server就建立了长连接,这个长连接是独自占用,只有当clent1断开之后才可以有其他的客户机于其交流
server端程序:
import socket sk=socket.socket() sk.connect(('127.0.0.1',8090)) while True: info=input('请输入信息:') if info=='bye': sk.send(b'bye') break info='tigger'+info sk.send(info.encode('utf-8')) ret=sk.recv(1024).decode('utf-8') print(ret) if ret=='bye': break sk.close()
client1端程序:
import socket sk=socket.socket() sk.connect(('127.0.0.1',8090)) while True: info=input('请输入信息:') if info=='bye': sk.send(b'bye') break info='alex'+info sk.send(info.encode('utf-8')) ret=sk.recv(1024).decode('utf-8') print(ret) if ret=='bye': break sk.close()
client2端程序:
import socket sk=socket.socket() sk.connect(('127.0.0.1',8090)) while True: info=input('请输入信息:') if info=='bye': sk.send(b'bye') break info='tigger'+info sk.send(info.encode('utf-8')) ret=sk.recv(1024).decode('utf-8') print(ret) if ret=='bye': break sk.close()
3.使用udp协议进行通讯的程序:
server端的程序:
import socket sk=socket.socket(type=socket.SOCK_DGRAM)#创建对象,括号里面加上类型 sk.bind(('127.0.0.1',8080)) #绑定ip和端口号 while True: ret,addr=sk.recvfrom(1024) #udp必须先要接受数据,为了获取返送端的地址 print (addr) print(ret.decode('utf-8')) info =input('请输入一个信息:') info=info.encode('utf-8') sk.sendto(info,addr) #数据的发送 sk.close()
client端的程序:
import socket sk=socket.socket(type=socket.SOCK_DGRAM) ip_port =('127.0.0.1',8080) while True: info=input('请输入信息:') info=('