位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > Python > 問(wèn)題詳情

在python的Socket編程之服務(wù)端代碼(windows)

提問(wèn)人:楊紫紅發(fā)布時(shí)間:2020-11-24
#_*_coding:utf-8_*_
__author__ = 'Administrator'

#!/usr/bin/python
import socket   #socket模塊
import commands,os   #執(zhí)行系統(tǒng)命令模塊
HOST='0.0.0.0'
PORT=50007
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #定義socket類(lèi)型,網(wǎng)絡(luò)通信,TCP
s.bind((HOST,PORT))   #套接字綁定的IP與端口
s.listen(1)         #開(kāi)始TCP監(jiān)聽(tīng)
while 1:
       conn,addr=s.accept()   #接受TCP連接,并返回新的套接字與IP地址
       print'Connected by',addr    #輸出客戶端的IP地址
       while 1:
            data=conn.recv(1024)    #把接收的數(shù)據(jù)實(shí)例化
            cmd_result=os.popen(data).read()#commands.getstatusoutput(data)   #commands.getstatusoutput執(zhí)行系統(tǒng)命令(即shell命令),返回兩個(gè)結(jié)果,第一個(gè)是狀態(tài),成功則為0,第二個(gè)是執(zhí)行成功或失敗的輸出信息
            print cmd_result
            if len(cmd_result) ==0:   #如果輸出結(jié)果長(zhǎng)度為0,則告訴客戶端完成。此用法針對(duì)于創(chuàng)建文件或目錄,創(chuàng)建成功不會(huì)有輸出信息
                    conn.sendall('Done.')
            else:
                    conn.sendall(cmd_result)   #否則就把結(jié)果發(fā)給對(duì)端(即客戶端)
conn.close()     #關(guān)閉連接

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部