做業1017

1.整理TCP三次握手、四次揮手圖服務器

在知道三次握手四次揮手以前socket

首先須要知道什麼是雙向通道,通道是信息傳輸的所需的通路,雙向通道就是兩條這樣的通路,每條負責不一樣的事情,一條是客戶端給服務端發送信息的,另外一條是服務端給客戶端法信息的。code

其次,每次不管是客戶端仍是服務端發送信息時,另外一端都要返回確認收到的信息server

三次握手指的是創建鏈接ip

創建鏈接就是創建雙向通道的過程。開發

第一次握手:客戶端向服務端發送鏈接請求,這樣就創建了客戶端向服務端的一條單向的通道input

第二次握手:服務端同時發送確認收到的信息和贊成鏈接的信息,第二條通道創建io

第三次握手:客戶端向服務端確認收到信息import

2.基於TCP開發一款遠程CMD程序
客戶端鏈接服務器後,能夠向服務器發送命令
服務器收到命令後執行,不管執行是否成功,不管執行幾遍,都將執行結果返回給客戶端
注意: 執行系統指令使用subprocess模塊完成.cli

服務端

import socket
import subprocess

server = socket.socket()

server.bind(
('127.0.0.1',8000)
)

server.listen(5)

監聽是否有消息

while True:
conn, addr = server.accept()
print(addr)
while True:
try:
data = conn.recv(1024).decode('gbk')
if data == 'q':
break
res = subprocess.check_output(data)

conn.send(res)

    except Exception as e:
        print(type(e))
        conn.send(str(e).encode('gbk'))

        print(e)
        continue
conn.close()

客戶端

import socket

client = socket.socket()

client.connect(
('127.0.0.1',8000)
)

while True:
send_msg = input('請輸入命令:')
client.send(send_msg.encode('gbk'))

if send_msg == 'q':
    break
    
data = client.recv(1024).decode('gbk')
print(data)

client.close()

'''
客戶端運行結果

請輸入命令:dsaf
[WinError 2] 系統找不到指定的文件。
請輸入命令:ipconfig

Windows IP 配置

無線局域網適配器 WLAN:

媒體狀態 . . . . . . . . . . . . : 媒體已斷開鏈接
鏈接特定的 DNS 後綴 . . . . . . . :

無線局域網適配器 本地鏈接* 9:

媒體狀態 . . . . . . . . . . . . : 媒體已斷開鏈接
鏈接特定的 DNS 後綴 . . . . . . . :

無線局域網適配器 本地鏈接* 10:

媒體狀態 . . . . . . . . . . . . : 媒體已斷開鏈接 鏈接特定的 DNS 後綴 . . . . . . . : '''

相關文章
相關標籤/搜索