學習網路程式設計必須要練習的三個小專案就是echo服務,chat服務和proxy服務。在接下來的幾篇文章會詳細介紹。
今天就來介紹echo服務,echo服務是最基本的服務。它的主要特點就是連線與連線之間沒有通訊。
根據官網上的例子,做簡單的修改。
echo_server.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""echo server program
"""import socket
host = ''
port = 50007
defmain
(): s = socket.socket(socket.af_inet, socket.sock_stream)
s.bind((host, port))
s.listen(1)
while
true:
conn, addr = s.accept()
print('connected by {}'.format(addr))
while
true:
data = conn.recv(1024)
ifnot data:
break
conn.sendall(data)
conn.close()
s.close()
if __name__ == '__main__':
main()
echo_client.py
輸入為空時,關閉連線。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""echo client program
"""import socket
host = 'localhost'
port = 50007
defmain
(): s = socket.socket(socket.af_inet, socket.sock_stream)
s.connect((host, port))
while
true:
data = raw_input('> ')
ifnot data:
break
s.sendall(data)
data = s.recv(1024)
ifnot data:
break
print('{}'.format(data))
s.close()
if __name__ == '__main__':
main()
先執行伺服器程式,再啟動客戶端程式,如下:
伺服器:
客戶端:
要實現輸入與輸出不同,就需要解決輸入的內容,根據不同的輸入(指令)給出不同的應答。
下面我們實現以下幾個小功能:
- 輸入date,返回當前的日期與時間。
- 輸入os,返回作業系統資訊。
- 輸入ls,列出當前目錄的清單。輸入ls dir,返回dir目錄的檔案清單。
echo_server.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""echo server program
"""import socket
import time
import os
host = ''
port = 50007
defmain
(): s = socket.socket(socket.af_inet, socket.sock_stream)
# enable address reuse
s.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)
s.bind((host, port))
s.listen(1)
while
true:
conn, addr = s.accept()
print('connected by {}'.format(addr))
while
true:
data = conn.recv(1024)
ifnot data:
break
elif data == 'date':
data = get_date()
elif data == 'os':
data = get_os()
elif data.startswith('ls'):
data = get_ls(data[2:])
conn.sendall(data)
conn.close()
s.close()
defget_date
():return time.ctime()
defget_os
():return os.name
defget_ls
(dire):
ifnot dire.strip():
dire = os.curdir
return
'\n'.join(os.listdir(dire.strip()))
if __name__ == '__main__':
main()
echo_client.py
沒有變化。
效果如下:
伺服器:
客戶端:
通過上面的兩上小練習,所有類似echo都應該可以完成了。可以在其基礎上進行擴充。比如實現一上http伺服器。
TCP網路程式設計之echo回射程式
tcp網路程式設計有三個例子最值得學習研究,分別是echo chat proxy,都是長連線協議。接下來,把這幾個例子都實現。本節用乙個簡單的例子來講tcp客戶 伺服器程式框架,這也是echo的實現。程式的基本流程 客戶從標準輸入鍵入一行文字,並傳送給伺服器。伺服器接收到文字之後回射給客戶端。客戶端...
shell 程式設計之echo
echo it is a test echo itis a testecho it is a test read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數 bin sh read name echo name it is a test 以上 儲存為 test.sh,...
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...