Python 提供了兩個基本的 socket 模塊。
1、Socket 類型
2、Socket 函數
3、socket編程思路
4、Socket編程之服務端代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
root@yangrong:
/
python
# catday5-socket-server.py
#!/usr/bin/python
import
socket
#socket模塊
import
commands
#執行系統命令模塊
HOST
=
'10.0.0.245'
PORT
=
50007
s
=
socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#定義socket類型,網絡通信,TCP
s.bind((HOST,PORT))
#套接字綁定的IP與端口
s.listen(
1
)
#開始TCP監聽,監聽1個請求
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執行系統命令(即shell命令),返回兩個結果,第一個是狀態,成功則為0,第二個是執行成功或失敗的輸出信息
if
len
(cmd_result.strip())
=
=
0
:
#如果輸出結果長度為0,則告訴客戶端完成。此用法針對於創建文件或目錄,創建成功不會有輸出信息
conn.sendall(
'Done.'
)
else
:
conn.sendall(cmd_result)
#否則就把結果發給對端(即客戶端)
conn.close()
#關閉連接
|
5、Socket編程之客戶端代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
root@yangrong:
/
python
# catday5-socket-client.py
#!/usr/bin/python
import
socket
HOST
=
'10.0.0.245'
PORT
=
50007
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()
#關閉連接
|



client:



