簡單地使用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語法問題不支持。報錯。