歡迎您光臨本站 註冊首頁

Python Socket TCP雙端聊天功能實現過程詳解

←手機掃碼閱讀     retouched @ 2020-06-16 , reply:0

SOCKET編程

  • socket(套接字):是一個網絡通信的端點,能實現不同主機的進程通信, -通過IP+端口定位對方併發送消息的通信機制

  • 分為UDP和TCP

  • 客戶端Client: 發起訪問的一-方

  • 服務器端Server: 接受訪問的一方

UDP編程

Server端流程
 

1.建立socket,socket是負貴具體通信的一個實例
 

2.綁定,為創建的socket指派固定的端口和ip地址
 

3.接受對方發送內容
 

4.給對方發送反饋,此步驟為非必須步驟

Client端流程
 

1.建立通信的socket
 

2.發送內容到指定服務器
 

3.接受服務器給定的反饋內容

  • 服務器案例v01

  • 客戶端案例v02

  • 服務器程序要求永久運行,一般用死循環處理

  • 改造的服務器版本v03

TCP編程

  • 面向連接的傳輸,即每次傳輸之前需要建立一個連接

  • 客戶端和服務端兩個程序需要編寫

Server端的編寫流程
 

1.建立Socket負責具體通信。這個socket其實只負責接受對方的請求
 

2.綁定端口和地址
 

3.監聽接入的訪問Socket
 

4.接受訪問的Socket,可以理解接受訪問即建立了一個通訊的鏈路通路
 

5.接受對方的發送內容,利用接收到的Socket接受內容
 

6.如果有必要,給對方發送反饋信息
 

7.關閉鏈路通路

Client端流程
 

1.建立通信socket
 

2.鏈接對方,請求跟對方建立通路
 

3.發送內容到對方服務器
 

4.接受對方的反饋
 

5.關閉鏈接通路

Server端:

  import socket    def tcp_server():    # 1、建立socket負責具體通信,這個和socket其實只負責接受對方的請求,真通信的是連接後    # socket.AF_INET:使用ipv4協議    # socket.SOCK_STREAM:使用tcp連接    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)    # 2、綁定IP以及端口    addr = ("192.168.200.2", 1914)    sock.bind(addr)    # 3、監聽接入的訪問socket    sock.listen()      while True:      # 4、接受訪問的Socket 可以理解接受訪問即建立了一個通訊的連接通路      # accept 返回的元祖第一個元素賦值給SKT,利用接受到的socket接受內容      skt, addr = sock.accept() # 建立通道      # 5、接受對方發送的內容、利用接受到的socket接受內容      # 500 表示接受使用的buffersize      # mgs = skt.receive(500)      mgs = skt.recv(500)      # 接受到的是bytes格式內容      # 想得到str格式的,需要進行解碼      msg = mgs.decode()      print(msg)      data = f'我已經收到了'      # print(data)      # 6、如果有必要、給對方反饋信息      skt.send(data.encode())      skt.close()  if __name__ == '__main__':    print("tcpstaring......")    tcp_server()    print("tcpstoping......")

 

client端

  import socket      def tcp_client():    a = 0    while a < 100:      # 1、建立通信socket      sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)      addr = ("192.168.200.2", 1914)      sock.connect(addr)      data = f"{a}你好 我是client,你收到了麼?"      sock.send(data.encode())      rst = sock.recv(500)      print(rst.decode())      sock.close()      a+=1    if __name__ == '__main__':    tcp_client()

  


[retouched ] Python Socket TCP雙端聊天功能實現過程詳解已經有131次圍觀

http://coctec.com/docs/python/shhow-post-238755.html