1、在寫這個程式之前我們先來了解一下socket的工作過程:如下圖所示:
一、服務端繫結乙個埠號、並處於監聽狀態。用accept()接收發來的資料請求:
二、客戶端通過位址和埠號連線服務端,並傳送資料請求。
三、服務端收到後,處理請求,併發請求發給客戶端。如何客戶端還在連線請求,那麼就迴圈操作。
四、客戶端處理完資料之後,傳送關閉請求,服務端收到請求後也開始關閉連線。
實驗過程:(直接貼**)
伺服器端**:
#!/usr/bin/python
import socket
import os
import time #匯入下面要用到的模組
host = '' #空和4個0表示,監聽所有的位址
port = 11111 #開啟11111埠號,確保這個埠號系統還沒有開啟
s = socket.socket(socket.af_inet,socket.sock_stream) #指定傳輸的資料型別和結構。一般固定這個
s.bind((host,port)) #繫結上面變數的位址和埠號。
s.listen(2) #埠監聽狀態
conn,addr = s.accept() #定義接收到的連線和addr位址變數
#########-----------------
print 'got client from:',addr #列印訪問的ip位址和埠有助於排錯
while true: #寫乙個迴圈,不寫迴圈資料一次就關閉了
data = conn.recv(4096) #定義接收到的資料大小
print 'get data',data #列印接收到的資料名稱(幫助排錯)
if not data:
time.sleep(3) #寫個if判斷接入接收不到語句。那麼列印輸出間隔輸出,不讓花屏
cmd = os.popen(data) #定義乙個變數cmd把收到的結果,用os.執行,因為我們是ssh客戶端
result=cmd.read() #把執行結果列印出來並付給變數result
conn.sendall(result) #把執行結果sendall的方式傳回去
conn.close()
客戶端**:
#/usr/bin/env python
import socket
from time import sleep
h = '192.168.63.129'
p = 111111
s = socket.socket(socket.af_inet,socket.sock_stream)
s.connect((h,p))
while true:
input = raw_input("please input your command:")
if len(input) ==0:
print "your must input your command:"
continue
else:
pass
s.send(input) #把輸入的結果傳給伺服器
received_data = s.recv(1024) #定義接收的資料
print "received_data from server:\n" ,received_data #列印接收的資料
sleep(1)
s.close()
先啟動伺服器端,然後看埠是否已經開啟。然後執行客戶端**:效果如下圖所示:
客戶端:
伺服器端:
c DLL程式設計之一
dll的優點 簡單的說,dll有以下幾個優點 1 節省記憶體。同乙個軟體模組,若是以源 的形式重用,則會被編譯到不同的可執行程式中,同時執行這些exe時這些模組的二進位製碼會被重複載入到記憶體中。如果使用dll,則只在記憶體中載入一次,所有使用該dll的程序會共享此塊記憶體 當然,像dll中的全域性...
RAPI程式設計之一
今天剛開始學習rapi程式設計,先將今天學習的成果放出來,大家學習。如果 有問題,請提出,多謝 在pc上使用vc6,好久沒有用它了。一直在evc4下程式設計,呵呵.rapi功能的實現,需要rapi.dll和rapi.h。在以下的實現中,link的動態庫是c windows system32 rapi...
如何學習程式設計之一?
第乙個階段 什麼都不會。不會就先抄你老師給你們寫的例子,不准複製,要乙個字乙個字的敲。放心,其 中肯定會遇到問題,先自己想想問題怎麼解決,能解決就盡量自己解決,不能就 看你老師源 第二個階段 知道大概了。但是要自己寫還是寫不出來,這個時候你要先看你老師 知道大概的思路。然後你以自己的思路開始寫,開始...