1. 程式人生 > >Python學習:網路程式設計'TCP'和'UDP'

Python學習:網路程式設計'TCP'和'UDP'

網路程式設計:計算機之間做資料交換
客戶端:前端
服務端:
如何將資料傳送到服務端
服務端資料如何下發給客戶端

網路程式設計三要素:
 ip地址:計算機在網路上的位置
 埠號:應用程式
 協議:傳輸的方式,對話方式
  TCP:需要建立連線,速度慢,可靠安全{打電話}
  UDP:不需要連線,速度快,不可靠不安全{只管發(發簡訊)不管對方有沒有收到}

TCP:

'''
client:客戶端
TCP:必須建立連線

'''

import socket
# 建立socket物件:指定傳輸協議
# (AF_INET:IPV4   SOCK_STREAM:TCP協議)
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 建立連線:傳送連線請求
s.connect(('10.8.156.24',8000))
# 傳送資料
while True:
    data = input('我:')
    s.send(data.encode())
    data1 = s.recv(1024)
    print('她:',data1.decode())
    if data1 == '再見':
        break
'''
server:服務端
'''
import socket
# 建立socket物件
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 繫結IP地址和埠號
s.bind(('10.8.156.24',8000))
# 監聽
s.listen(1)
# 同意連線請求
s1,addr = s.accept()
#recive 接收資料
while True:
    data = s1.recv(1024)
    print('她:',data.decode())
    data1 = input('我:')
    s1.send(data1.encode())
    if data1 == '再見':
        break

UDP:

import socket

# 建立socket物件  SOCK_DGRAM:udp協議
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 傳送資料
s.sendto('下課下課'.encode(),('10.8.156.24',8000))
import socket

# 建立socket物件  SOCK_DGRAM:udp協議
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#
s.bind(('10.8.156.24',8000))
while True:
    # data = s.recv(1024)
    data,addr = s.recvfrom(1024)#可以看到IP地址
    print(addr,':',data.decode())