# 示例代码
本文作者:[WTB]
# *python udp:
import socket
import threading
def recv_msg(udp_socket):
#接受数据
while True:
recv_data = udp_socket.recvfrom(1024)
print(recv_data)
def send_msg(udp_socket, dest_ip, dest_port):
#发送数据
while True:
send_data = input("请输入控制器的命令:")
udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))
def main():
#创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#绑定本地信息
udp_socket.bind(("", 10000))
#输入控制器的ip
dest_ip = input("请输入控制器的ip:")
dest_port = int(input("请输入控制器的port:"))
t_recv = threading.Thread(target=recv_msg, args=(udp_socket,))
t_send = threading.Thread(target=send_msg, args=(udp_socket, dest_ip, dest_port))
t_recv.start()
t_send.start()
if __name__ == '__main__':
main()
# *python telnet:
import logging
import telnetlib
import time
def main():
host_ip = '192.168.1.77'
telnet_client = TelnetClient()
# 如果登录结果返加True,则执行命令,然后退出
if telnet_client.login_host(host_ip):
while True:
command = input("input:")
if command == "exit":
break
else:
telnet_client.execute_some_command(command)
#telnet_client.logout_host()
class TelnetClient():
def __init__(self,):
self.tn = telnetlib.Telnet()
# 此函数实现telnet登录主机
def login_host(self,host_ip):
try:
# self.tn = telnetlib.Telnet(host_ip,port=2701)
self.tn.open(host_ip,port=2701)
except:
logging.warning('%s网络连接失败'%host_ip)
return False
time.sleep(1)
# 获取登录结果
# read_very_eager()获取到的是的是上次获取之后本次获取之前的所有输出
command_result = self.tn.read_very_eager().decode('ascii')
if 'Login incorrect' not in command_result:
print('%s登录成功'%host_ip)
return True
else:
logging.warning('%s登录失败'%host_ip)
return False
# 此函数实现执行传过来的命令,并输出其执行结果
def execute_some_command(self,command):
# 执行命令
self.tn.write(command.encode('ascii')+b'\n')
time.sleep(1)
# 获取命令结果
command_result = self.tn.read_very_eager().decode('ascii')
print('命令执行结果:\n%s' % command_result)
if __name__ == '__main__':
main()