from socket import *
import time
ip_port = ('127.0.0.2',8080)
buffer_size = 1204
udp_server = socket(af_inet,sock_dgram)
udp_server.bind(ip_port)
while true:
data, addr = udp_server.recvfrom(buffer_size)
back_time = time.strftime('%y-%m-%d-%x')
udp_server.sendto(back_time.encode('utf-8'),addr)
print(data.decode('utf-8'))
udp_server.close()
from socket import *
ip_port = ('127.0.0.2',8080)
buffer_size = 1204
udp_client = socket(af_inet,sock_dgram)
while true:
msg = input('任意鍵獲取時間')
udp_client.sendto(msg.encode('utf-8'),ip_port)
data,addr = udp_client.recvfrom(buffer_size)
print(data.decode('utf-8'))
udp_client.close()
輸出:
任意鍵獲取時間w3
2018-12-11-17:21:05
任意鍵獲取時間
2018-12-11-17:21:06
任意鍵獲取時間edf
2018-12-11-17:21:06
from socket import *
import subprocess
ip_port = ('127.0.0.1',8080)
back_log = 5
buffer_size = 1024
tcp_server = socket(af_inet,sock_stream)
tcp_server.setsockopt(sol_socket, so_reuseaddr, 1) # 重新使用ip位址,防止出現address被占用的錯誤
tcp_server.bind(ip_port)
tcp_server.listen(back_log)
while true: #鏈結迴圈
print('伺服器執行了')
conn,addr = tcp_server.accept()
print('新的客戶端鏈結',addr)
while true: #通訊迴圈
try:
cmd = conn.recv(buffer_size)
if not cmd: #當客戶端正常斷開時,cmd一直在收空資訊
break
print('收到的客戶端命令是',cmd)
res = subprocess.popen(cmd.decode('utf8'),shell=true,stdout=subprocess.pipe,
stdin=subprocess.pipe,stderr=subprocess.pipe)
err = res.stderr.read()
if err:
cmd_res = err
else:
cmd_res = res.stdout.read()
conn.send(cmd_res)
except exception as e:
print(e)
break #異常退出時,進入下次迴圈
conn.close() #正常退出時,斷開鏈結
tcp_server.close()
輸出:
伺服器執行了
新的客戶端鏈結 (『127.0.0.1』, 58242)
收到的客戶端命令是 b』dd』
收到的客戶端命令是 b』gg』
[winerror 10054] 遠端主機強迫關閉了乙個現有的連線。
伺服器執行了
新的客戶端鏈結 (『127.0.0.1』, 58245)
收到的客戶端命令是 b』dd』
收到的客戶端命令是 b』ddd』
收到的客戶端命令是 b』dir』
[winerror 10054] 遠端主機強迫關閉了乙個現有的連線。
伺服器執行了
新的客戶端鏈結 (『127.0.0.1』, 58271)
收到的客戶端命令是 b』dd』
from socket import *
ip_port = ('127.0.0.1',8080)
buffer_size = 1024
tcp_client = socket(af_inet,sock_stream)
tcp_client.connect(ip_port)
while true:
cmd = input('>>:').strip()
if not cmd:
continue
if cmd == 'quit':
break
tcp_client.send(cmd.encode('utf-8'))
data = tcp_client.recv(buffer_size)
print(data.decode('gbk'))
tcp_client.close()
輸出:
: ddd『ddd』 不是內部或外部命令,也不是可執行的程式
或批處理檔案。
:dir驅動器 c 中的卷沒有標籤。
卷的序列號是 ec05-9f96
c:\users\administrator\pycharmprojects\untitled1 的目錄
2018/12/11 21:20 .
2018/12/11 21:20
… 2018/12/11 21:18
.idea
2018/12/11 21:07 399
客戶端.py
2018/12/11 20:56 399
客戶端2.py
2018/12/11 21:20 1,358
服務端.py
2018/11/30 20:28 542 馬林
2018/11/30 22:05 542 馬林2
13 個檔案 5,251 位元組
4 個目錄 7,543,455,744 可用位元組
:process finished with exit code -1
監聽套接字 連線套接字
摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...
監聽套接字 連線套接字的區別
摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...
Dart的套接字與web套接字
首先在專案中建三個dart檔案,如下圖 main.dart中的 如下 import dart io import dart convert main listarguments socket 1.dart中的 如下 import dart io main listarguments socket 2...