<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 特點 **面向連接** 通信雙方必須先建立連接才能數據的傳輸. 這種連接是一對一的,因此tcp不適用于廣播的應用程序,基于廣播的應用請使用udp **可靠傳輸** tcp采用發送應答機制 超時機制 錯誤校驗 流量控制和阻塞管理 # tcp與udp不同點 * 面向連接(確認有創建三方交握,連接已創建才作傳輸) * 有序數據傳輸 * 重發丟失的數據包 * 舍棄重復的數據包 * 無差錯的數據傳輸 * 阻塞/流量控制 # tcp客戶端 創建Socket時,`AF_INET`指定使用IPv4協議,如果要用更先進的IPv6,就指定為`AF_INET6` 接收數據時,調用`recv(max)`方法,一次最多接收指定的字節數,因此,在一個while循環中反復接收,直到recv()返回空數據,表示接收完畢,退出循環 ~~~ from socket import * # 創建socket tcp_client_socket = socket(AF_INET, SOCK_STREAM) # 目的信息 server_ip = input('請輸入服務器ip : ') server_port = int(input('請輸入服務器port : ')) # 鏈接服務器 tcp_client_socket.connect((server_ip, server_port)) # 提示用戶輸入數據 send_data = input('請輸入要發送的數據 : ') tcp_client_socket.send(send_data.encode('utf-8')) # 接收對方發送過來的數據,最大接收1024字節 recvData = tcp_client_socket.recv(1024) print('接收到的數據為 : ', recvData.decode('utf-8')) # 關閉套接字 tcp_client_socket.close() ~~~ # tcp服務器 流程如下: 1. socket創建一個套接字 2. bind綁定ip和port 3. listen使套接字變為可以被動鏈接 4. accept等待客戶端的鏈接 5. recv/send接收發送數據 ~~~ import socket # 創建套接字 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 綁定本地信息 tcp_server_socket.bind(('', 13909)) # 讓默認的套接字由主動變為被動 tcp_server_socket.listen(128) # 循環的目的:調用多次accept,從而為多個客戶端服務 while True: # 等客戶端的鏈接 accept new_client_socket, client_addr = tcp_server_socket.accept() print('一個新客戶端已經連接了 %s ' % str(client_addr)) while True: # 接收客戶端發送過來的請求 recv_data = new_client_socket.recv(1024) if recv_data: # 回送一部分數據給客戶端 new_client_socket.send('---ok---'.encode('utf-8')) else: break print('客戶端發送過來的請求是: %s ' % recv_data.decode('utf-8')) # 關閉套接字 new_client_socket.close() print('已經服務完了') # 監聽套接字關閉了,那么會導致不能再次等待新客戶端的到來,即xxx.accept就會失敗 tcp_server_socket.close() ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看