Python連載53-UDP、TCP、FTP編程實例

1、服務器程序要求永遠運行,通常用死循環來處理git

1.服務器改造版本V03(主程序github

原封不動,這裏只修改了運行的程序)

 

if __name__ == "__main__":

    while True:

        try:

            print("Start Server")

            serverFunc()

            print("End Server")

        except Exception as e:

            print(e)

​

        time.sleep(1)

 

 

2、TCP編程編程

1.面向連接的傳輸,即每次傳輸以前須要先創建一個實例服務器

2.客戶端和服務端兩個程序須要編寫微信

3.Server端的編寫流程socket

(1)創建socket負責具體通訊,這個socket其實只負責接受對方的請求tcp

(2)綁定端口和地址oop

(3)監聽接入的訪問socket學習

(4)接受訪問的socket,能夠理解接受訪問即創建了一個通信的連接通路大數據

(5)接受對方的發送內容,利用接收到的socket接受內容

(6)若是有必要,給對方發送反饋信息

(7)關閉連接通路

4.Client端流程

(1)創建通訊socket

(2)連接對方,請求跟對方創建通路

(3)發送內容到對方服務器

(4)接受對方的反饋

(5)關閉連接通路

5.舉例

 

import socket

​

def tcp_srv():

    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#其哪個參數爲ipv4,後一個參數爲TCP固定參數

    addr = ("127.0.0.1",8998)#ip地址和端口號

​

    sock.bind(addr)#綁定addr

    sock.listen()#監聽接入的訪問socket
while True:

        #接受訪問的socket,能夠理解爲接受訪問即創建一個通信的連接通路,accept返回的元組第一個元素賦給skt,第二個元素賦給addr

        skt,addr = sock.accept()#第一個元素是socket,第一個元素就是發送方的地址

        #接受對方的發送內容,利用接受到的socket接受內容

        msg = skt.recv(500)#500表明接收使用的buffersize,理解爲接受內容的大小

        msg = msg.decode()#接受到的是bytes格式內容,想獲得str格式的,須要進行解碼

        #下面三行表明反饋的信息

        rst = "Received msg:{0} from {1}".format(msg,addr)

        print(rst)

        skt.send(rst.encode())

        #關閉socket

        skt.close()

​

if __name__ == "__main__":

    print("Startint tcp server.......")

    tcp_srv()

print("Ending tcp server.........")

 

 

 

 

import socket

​

def tcp_clt():

    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    addr = ("127.0.0.1",8998)

    sock.connect(addr)#連接addr這個地址,創建tcp這個通道

    msg = "I am a good man"

    sock.send(msg.encode())

    rst = sock.recv(500)#接受對方的反饋

    print(rst.decode())

    sock.close()

​

if __name__ == "__main__":

    tcp_clt()

 

解釋:先運行了服務器端的程序一次,而後運行了客戶端程序四次,能夠看到服務器端(端口8998)接收到了四次客戶端發來的消息,而且每一次發來消息的端口都不同,按照升序53256-53259.

3、FTP編程

FTP(FileTransferProtocal)文件傳輸協議

​用途:定製一些特殊的上傳下載文件的服務

​用戶分類:登陸FTP服務器必須有一個帳號

(1)Real帳戶​:註冊帳戶

(2)​Guest帳戶:可能臨時對某一類人的行爲進行受權

(3)Anoymous​帳戶:匿名帳戶,容許任何人​

4、源碼

D33_3_LoopOfServer.py

D33_4_TCPSever.py

D33_5_TCPClient.py

https://github.com/ruigege66/Python_learning/blob/master/D33_3_LoopOfServer.py

https://github.com/ruigege66/Python_learning/blob/master/D33_4_TCPSever.py

https://github.com/ruigege66/Python_learning/blob/master/D33_5_TCPClient.py

2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索