1. 程式人生 > >套接字入門(python3入門)

套接字入門(python3入門)

'''
1、什麼是套接字socket
    socket把傳輸層以下的協議都封裝成了簡單介面,我們編寫基於網路通訊的軟體只需要呼叫這些介面即可,
        我們寫出的程式自然是遵循tcp/udp協議的。。。

    什麼是網際網路:
        網際網路 = 物理連線介質 + 網際網路通訊協議

    ip+port 就可以標示出全世界範圍內獨一無二的一個基於網路通訊的軟體



2、為何要用socket
    目標:便攜一個C/S架構的軟體
    server端必須具備:
        1、服務端需要穩定執行,一直對外提供服務
        2、服務端必須繫結一個固定的地址(ip+port)
        3、服務端要支援併發


3、如何用socket
    套接字自制家族:AF_UNIX(基於檔案),AF_INET(網路通訊)
'''
#! /usr/bin/env python
# -*- coding: utf-8 -*-



import socket


#1 買手機
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)    #socket_DRAM udp協議,socket_STREAM流式協議

# print('套接字物件1',phone)
#套接字1主要用來繫結,做準備工作


#2 繫結手機卡
phone.bind(('127.0.0.1',8080))  #port:0~65535


#3 開機
phone.listen(5) #
backlog是半連線池,一般把半連線池的值寫到配置檔案中 #4 等待電話撥入 print('start...') conn,client_addr=phone.accept() #對應客戶端的connect操作 # print('>>>>>>>>>>>') # print('套接字物件2:',conn) #套接字2 代表tcp建好的雙向通路 收發資料 # print(client_addr) #5 收發訊息 data = conn.recv(1024) #最大隻能接收:1024bytes 收訊息 send = conn.send(data.upper())
import time time.sleep(100000) #6 掛電話 conn.close() #7 關手機 phone.close()
server
#! /usr/bin/env python
# -*- coding: utf-8 -*-



import socket



phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)    #socket_DRAM udp協議,socket_STREAM流式協議


phone.connect(('127.0.0.1',8080))  #port:0~65535
print('客戶端連線請求已經發送!')

phone.send('hello'.encode('utf-8'))
data = phone.recv(1024)
print(data)


phone.close()
client