程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Netcat在Python中的实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Netcat在Python中的实现?

开发过程中遇到Netcat在Python中的实现的问题如何解决?下面主要结合日常开发的经验,给出你关于Netcat在Python中的实现的解决方法建议,希望对你解决Netcat在Python中的实现有所启发或帮助;

如果您只使用它是否有效nc

我认为您应该尝试一些更简单的方法:

import socket

def netcat(hostname, port, content):
    s = socket.socket(socket.AF_INET, socket.soCK_STREAM)
    s.connect((hostname, port))
    s.sendall(content)
    s.shutdown(socket.SHUT_WR)
    while 1:
        data = s.recv(1024)
        if Data == "":
            break
        print "Received:", repr(data)
    print "Connection closed."
    s.close()

shutdown之所以加入此通话,是因为您的设备可能正在等待您说完数据发送。(这有点奇怪,但是有可能。)

解决方法

我找到了它并以它为基础,但它开箱即用时却无法正常工作。我的目标也是将其视为程序包而不是命令行实用程序,因此我的代码更改将反映出来。

class Netcat:
    def __init__(self,hostname,port):
        self.hostname = hostname
        self.port = port
    def send(self,content):
    self.socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    self.socket.connect((self.hostname,self.port))
    self.socket.setblocking(0)
    result = '';
    read_ready,write_ready,in_error = SELEct.SELEct([self.socket],[],[self.socket],5)
    if(self.socket.sendall(content) != NonE):
        return
    while(1):
        buffer = ''
        try:                
            buffer = self.socket.recv(128)
            while(buffer != ''):
                result += buffer
                try:
                    buffer = self.socket.recv(128)
                except socket.error as err:
                    print (err,type(err))
                    buffer = ''
            if(buffer == ''):
                break
        except socket.error as err:
            print (err,type(err))
        if(buffer == ''):
            break
    return result

当我向设备发送基本命令时,它将返回以下内容。

50PMA-019 Connection Open
Atten #1 = 63dB

我的代码读取第一行,但是随后出现错误消息,表明连接暂时不可用,并且没有获得第二行。如果我将其更改为阻塞,它只会阻塞并且永远不会返回。有什么想法吗?

大佬总结

以上是大佬教程为你收集整理的Netcat在Python中的实现全部内容,希望文章能够帮你解决Netcat在Python中的实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。