1. 程式人生 > 實用技巧 >簡單的 TCP 服務端 框架

簡單的 TCP 服務端 框架

import socket
import threading


def recv_msg(new_client_socket, ip_port):
    """
    接收訊息 的函式
    :param new_client_socket: socket
    :param ip_port: ip地址元祖
    :return:
    """
    while True:
        recv_data = new_client_socket.recv(1024)
        # 判斷是否有訊息返回
        if recv_data:
            recv_text 
= recv_data.decode("gbk") print("來自【%s】的訊息:%s" % (str(ip_port), recv_text)) else: # 如果斷開連線會執行這行程式碼,此時關閉socket的連線 new_client_socket.close() print("已經斷開【%s】的連線" % (str(ip_port))) break def main(): # 建立套接字 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 設定地址可複用 tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) # 繫結TCP埠 tcp_server_socket.bind(("", 8888)) # 設定監聽 最多128個連線 tcp_server_socket.listen(128) while True: new_client_socket, ip_port = tcp_server_socket.accept() print("新連線:", ip_port) new_thread
= threading.Thread(target=recv_msg, args=(new_client_socket, ip_port)) # 設定守護執行緒:在主執行緒關閉的時候 子執行緒也會關閉 new_thread.setDaemon(True) new_thread.start() # 此程式碼不被執行的 事實上也不需要被執行 因為伺服器不需要被關閉 tcp_server_socket.close() if __name__ == '__main__': main()