簡單地通過Python庫使用python的socket編程


簡單地使用python的socket編程

參考資料:https://blog.csdn.net/rebelqsp/article/details/22109925

 encoding問題的解決:https://www.cnblogs.com/KarryWang/p/3260858.html

#!/usr/bin/python
#coding:utf-8
import socket  #socket模塊
import commands   #執行系統命令模塊
HOST='0.0.0.0'
PORT=5007
s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #定義socket類型,網絡通信,TCP
s.bind((HOST,PORT))   #套接字綁定的IP與端口
s.listen(1)         #開始TCP監聽
while 1:
    conn,addr=s.accept()   #接受TCP連接,並返回新的套接字與IP地址
    print'Connected by',addr    #輸出客戶端的IP地址
    while 1:
        data=conn.recv(1024)    #把接收的數據實例化
        cmd_status,cmd_result=commands.getstatusoutput(data)   #commands.getstatusoutput執行系統命令
        if len(cmd_result.strip()) ==0:   #如果輸出結果長度為0,則告訴客戶端完成。此用法針對於創建文件或目錄,創建成功不會有輸出信息
            conn.sendall('Done.')
        else:
            conn.sendall(cmd_result)   #否則就把結果發給對端(即客戶端)
conn.close()                           #關閉連接

 

#!/usr/bin/python
#coding:utf-8
import socket
HOST='0.0.0.0' #localhost
PORT=5007
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)      #定義socket類型,網絡通信,TCP
s.connect((HOST,PORT))                       #要連接的IP與端口
while 1:
    cmd=raw_input("Please input cmd:")       #與人交互,輸入命令
    s.sendall(cmd)                           #把命令發送給對端
    data=s.recv(1024)                        #把接收的數據定義為變量
    print data                               #輸出變量
s.close()                                    #關閉連接

以上在python2中已經驗證通過。python3由於print語法問題不支持。報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM