類容
- TCP用戶端
- TCP服務端
- TCP需要注意事項
- 實作檔案下載下傳器
TCP用戶端建構流程
- 1.建立socket
- 2.連結伺服器
- 3.接收資料
- 4.關閉套接字
import socket
#建立套接字
tcp_demo=socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
#建立連接配接
tcp_demo.connect(("127.0.0.1",8080))
#發送資料
str1=input("請輸入你要發送的内容:")
tcp_demo.send(str1.encode("gbk"))
#接收伺服器發送過來的資料資料
str2=tcp_demo.recv(1024)
print(str2.decode("gbk"))
TCP服務端
- 1.socket建立套接字
- 2.bind綁定IP和port
- 3.listen使套接字變為可以被動連結
- 4.accept等待用戶端的連結
- 5.recv/send接收發送資料
import socket
def deom():
#建立套接字
tcp_demo=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#綁定伺服器端口和ip
tcp_demo.bind(("100.64.249.133",8080))
tcp_demo.listen(128)
#接受連接配接
new_tcp_demo,client_addr =tcp_demo.accept()
print(client_addr)
#發送資料
str1=input("請輸入你要發送的資料:")
new_tcp_demo.send(str1.encode("gbk"))
#接收客服端發送的資料
str2=new_tcp_demo.recv(1024)
print(str2.decode("gbk"))
if __name__ == '__main__':
deom()
"""
實作TCP服務端為多個用戶端服務
- 當一個用戶端的服務結束之後就會自動斷開,為等待的一個用戶端服務
- 隻能服務一次,無法多次為一個用戶端服務
"""
TCP優化
import socket
def deom():
#建立套接字
tcp_demo=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#綁定伺服器端口和ip
tcp_demo.bind(("100.64.249.133",8080))
#接受連接配接
while True:
tcp_demo.listen(128)
new_tcp_demo,client_addr =tcp_demo.accept()
print(client_addr)
#發送資料
while True:
str1=input("請輸入你要發送的資料:")
new_tcp_demo.send(str1.encode("gbk"))
#接收客服端發送的資料
str2=new_tcp_demo.recv(1024)
if str2.decode("gbk"):
print(str2.decode("gbk"))
else:
break
new_tcp_demo.close()
tcp_demo.close()
if __name__ == '__main__':
deom()
#添加循環是程式循環運作
實作檔案下載下傳器
下載下傳端 import socket
#建立接收端
tcp_demo=socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
#綁定端口和ip
tcp_demo.bind(("100.64.249.133",8080))
tcp_demo.listen(128)
#建立連接配接
new_tcp_demo,client_addr=tcp_demo.accept()
print(client_addr)
#接收資料
str1=new_tcp_demo.recv(1024*1024)
file_name="demo.txt"
with open("附件" + file_name, "ab") as p:
p.write(str1)
發送端 import socket
udp_demo=socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
udp_demo.connect(("100.64.249.133",8080))
#發送資料
with open('demo.txt','rb') as a:
udp_demo.send(a.read())
udp_demo.close()