套接字编程
Posted ztzdhbg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了套接字编程相关的知识,希望对你有一定的参考价值。
目录
程序
#服务器端
# -*-coding:utf-8-*-
# Author: yqliu
# CreatDate: 2019/10/18 14:22
#基础版本1
#*****************************************************************************88
#
# import socket
# print ('基础版本服务端启动。。。。。。。。。。。。。。')
#
# server=socket.socket()
#
# server.bind(((
# '127.0.0.1',9999
# )))
#
# server.listen(5)
#
# conn,addr=server.accept()
#
# data=conn.recv(1024).decode('utf-8')
# print (data)
#
#
# send_msg=input('请输入需要传给客户的字符')
# conn.send(send_msg.encode('utf-8'))
# conn.close()
# server.close()
#基础版本2(循环输入套接字)
# print ('基础版本服务端启动。。。。。。。。。。。。。。')
# import socket
#
# server=socket.socket()
#
# server.bind((
# '127.0.0.1',9527
# ))
#
# server.listen(5)
#
# conn,addr=server.accept()
#
# while True:
# data=conn.recv(1024).decode('utf-8')
# if data=='q':
# break
# print (data)
# send_msg=input('请输入发往客户端的字符串').encode('utf-8')
# conn.send(send_msg)
#
#
#
# conn.close()
#
# server.close()
#基础版本(多个客户端)
# print ('基础版本服务端启动。。。。。。。。。。。。。。')
# import socket
#
# server=socket.socket()
#
# server.bind((
# '127.0.0.1',9527
# ))
#
# server.listen(5)
#
# while True:
# conn,addr=server.accept()
# print (addr)
# while True:
# try:
# data = conn.recv(1024).decode('utf-8')
# if data=='q':
# break
# print(data)
# send_msg=input('请输入往客户端发送的字符串')
# conn.send(send_msg.encode('utf-8'))
# except Exception as e:
# print (e)
# break
# conn.close()
# server.close()
#基础版本4(作业)
#
# print ('服务端开始启动。。。。。。。。。。。')
#
# import socket
# import subprocess
#
# server=socket.socket()
#
# server.bind((
# '127.0.0.1',9527
# ))
#
# server.listen(5)
#
# conn,addr=server.accept()
# print (addr)
#
# cmd=conn.recv(1024).decode('utf-8')
#
# obj=subprocess.Popen(
# cmd,
# shell=True,
# stdout=subprocess.PIPE,
# stderr=subprocess.PIPE
# )
#
# result=obj.stdout.read()+obj.stderr.read()
# conn.send(result)
# conn.close()
# server.close()
#基础版本5(作业升级)
import socket
import subprocess
server=socket.socket()
server.bind((
'127.0.0.1',9527
))
server.listen(5)
while True:
conn,addr=server.accept()
print (addr)
while True:
try:
cmd=conn.recv(1024).decode('utf-8')
if cmd=='q':
break
print (cmd)
obj=subprocess.Popen(
cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
result=obj.stdout.read()+obj.stderr.read()
# send_msg=input('请输入需要传给客户端的内容:')
conn.send(result)
except Exception as e:
print (e)
break
conn.close()
server.close()
#客户端
# -*-coding:utf-8-*-
# Author: yqliu
# CreatDate: 2019/10/18 14:22
#基础版本1
# import socket
#
# client=socket.socket()
#
# client.connect((
# '127.0.0.1',9999
# ))
#
# client.send('你好,服务端,我给你发信息了'.encode('utf-8'))
#
# data=client.recv(1024)
# print (data.decode('utf-8'))
# client.close()
#基础版本2(循环输入套接字)
#
# print ('客户端版本已经启动。。。。。。。。。。。。。。。。。。')
# import socket
#
# client=socket.socket()
#
# client.connect((
# '127.0.0.1',9527
# ))
#
# while True:
# send_msg=input('请输入需要发往服务端的字符串').strip()
# if len(send_msg)==0:
# print ('不能输入空字符串')
# continue
# if send_msg=='q':
# print ('输入q退出程序')
# break
# client.send(send_msg.encode('utf-8'))
# data=client.recv(1024).decode('utf-8')
# print (data)
#
# client.close()
#基础版本3(多个客户端同时连接服务端)
# import socket
# print ('客户端版本已经启动。。。。。。。。。。。。。。。。。。')
#
# client=socket.socket()
#
# client.connect((
# '127.0.0.1',9527
# ))
#
# while True:
# send_msg=input('请输入发往服务端的内容:')
# if len(send_msg)==0:
# print ('不能输入空字符')
# continue
# if send_msg=='q':
# break
# client.send(send_msg.encode('utf-8'))
# data=client.recv(1024).decode('utf-8')
# print (data)
#
# client.close()
#基础版本4(作业)
#
# import socket
# client=socket.socket()
#
# client.connect((
# '127.0.0.1',9527
# ))
#
# cmd=input('请输入往服务端发送命令')
# client.send(cmd.encode('utf-8'))
# data=client.recv(1024).decode('GBK')
# print (data)
# client.close()
#基础版本5(作业升级)
import socket
client=socket.socket()
client.connect((
'127.0.0.1',9527
))
while True:
cmd=input('请输入需要传给服务端的命令:')
if cmd=='q':
break
if len(cmd)==0:
print ('不能输入空字符')
continue
client.send(cmd.encode('utf-8'))
data=client.recv(1024).decode('gbk')
print (data)
client.close()
以上是关于套接字编程的主要内容,如果未能解决你的问题,请参考以下文章