服務端
#!/usr/bin/python
# -*- coding:utf-8 -*-
import socket
import subprocess
#建立socket套接字,並指定通訊所用的協議
socket_server = socket.socket(socket.af_inet,socket.sock_stream)
#重新使用ip位址和埠號
socket_server.setsockopt(socket.sol_socket,socket.so_reuseaddr,1)
socket_server.bind(("127.0.0.1",8081))
socket_server.listen(5)
while true:
print("等待客戶端的連線.........")
conn,address = socket_server.accept()
print("鏈結已經生成")
print("客戶端的資訊是:",address)
"""雙方建立了連線後,就開始進行相同通訊
"""while true:
try:
client_msg = conn.recv(1024).decode("utf-8")
print("客戶端傳送的訊息是:%s" %client_msg)
res = subprocess.popen(client_msg,shell=true,
stdout=subprocess.pipe,
stderr=subprocess.pipe)
res_err = res.stderr.read()
if res_err:
cmd_res = res_err
else:
cmd_res = res.stdout.read()
conn.send(cmd_res)
except exception:
break
conn.close()
socket_server.close()
客戶端
#!/usr/bin/python
# -*- coding:utf-8 -*-
import socket
#建立socket套接字,並指定通訊所用的協議
socket_client = socket.socket(socket.af_inet,socket.sock_stream)
#客戶端向服務端傳送鏈結請求
socket_client.connect(("127.0.0.1",8081))
"""雙方建立了連線後,就開始進行相同通訊
"""while true:
str_msg = input(">>")
if not str_msg: continue
socket_client.send(str_msg.encode('utf-8'))
print("訊息已經傳送出去!")
ser_msg = socket_client.recv(1024).decode("gbk")
print("服務端傳送過來的訊息是:%s"%ser_msg)
socket_client.close()
套接字程式設計
1 ipv4 通用套接字的位址結構 struct socketaddr2 ipv6 3 值 結果引數 有點迷糊 套接字位址結構大小作為乙個指標傳給核心的原因 當函式被核心呼叫時,大小結構是乙個值 value 告訴核心該結構的大小,核心在寫該結構時不會越界。當函式返回時,結構大小是乙個結果 resul...
套接字程式設計
例1 建立sockaddr in結構體變數,並繫結套接字 建立套接字 int serv sock socket af inet,sock stream,ipproto tcp 建立sockaddr in結構體變數 struct sockaddr in serv addr memset serv ad...
python套接字程式設計 python套接字程式設計
服務端 usr bin python coding utf 8 import socket s socket.socket host socket.gethostname port 12345 s.bind host,port s.listen 5 while true c,addr s.accep...