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