Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不结束另一个python脚本的情况下启动新的python脚本_Python_Sockets - Fatal编程技术网

如何在不结束另一个python脚本的情况下启动新的python脚本

如何在不结束另一个python脚本的情况下启动新的python脚本,python,sockets,Python,Sockets,我希望能够在新的终端中打开一个新的python脚本,而不必结束另一个终端。 我试图用一个脚本创建一个服务器,将所有客户端发送到新脚本,但如果另一个脚本结束,它将无法工作 有办法解决这个问题吗 下面是我的一些代码 起动器: import socket; import time import os def clear(): os.system('cls' if os.name == 'nt' else 'clear') s = socket.socket(socket.AF_INET, sock

我希望能够在新的终端中打开一个新的python脚本,而不必结束另一个终端。 我试图用一个脚本创建一个服务器,将所有客户端发送到新脚本,但如果另一个脚本结束,它将无法工作

有办法解决这个问题吗

下面是我的一些代码

起动器:

import socket; import time
import os
def clear():
  os.system('cls' if os.name == 'nt' else 'clear')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = socket.gethostbyname(socket.gethostname())
print(ip, "thats da ip")
port = 8080
print(port, "da port")
s.bind((ip, port))
print("binded")
def idk():
    s.listen(1)
    c, a = s.accept()
    print(f"connection from {a}")
    print("authenticating")
    time.sleep(1)
    g = c.recv(300).decode("utf-8")
    if g == ">><<":
        print("accepted")
        time.sleep(3)
        print("starting script")
        time.sleep(2)
        clear()
        os.system("main.py")
        print("script started")
        while True:
            e = open("connection_script", "r")
            p = e.read()
            e.close()
            if p == "":
                pass
            else:
                print(f"port is {p}")
                print("sending port")
                c.sendall(bytes(p, "utf-8"))
                print("ending...")
                time.sleep(2)
                s.close()


    else:
        print("failed to pass")
        time.sleep(1)
        clear()
        c, a = None
        pass
idk()

导入套接字;导入时间
导入操作系统
def clear():
os.system('cls'如果os.name='nt'或者'clear')
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip=socket.gethostbyname(socket.gethostname())
打印(ip,“即da ip”)
端口=8080
打印(端口,“da端口”)
s、 绑定((ip,端口))
打印(“装订”)
def idk():
s、 听(1)
c、 a=s.accept()
打印(f“来自{a}的连接”)
打印(“验证”)
时间。睡眠(1)
g=c.recv(300)。解码(“utf-8”)

如果g==“>>文件>YoMan如果使用PyCharm,请执行以下操作:

  • 右键单击服务器脚本并按run
  • 然后转到客户端脚本并按run
  • 他们应该一起跑步
  • 如果你想运行多个客户端脚本,那么在左手边的“运行”终端上会有图标,点击第二个图标,该图标表示“修改运行配置”(仅当你将鼠标悬停在上面时)
  • 单击“名称”字段右侧的复选框后,应显示“允许parrell运行”复选框,单击该复选框
  • 现在,您将能够同时运行多个客户端文件
  • 如果您没有Pycharm,请执行此操作(windows):

  • 进入你保存文件的目录
  • 按Shift+向右键
  • 这里将有一个打开powershell的选项单击该选项
  • 然后写“python” 并对其他文件执行相同的操作

  • 仅适用于PYTHON!!!!!

    Yo man如果您使用PyCharm,请执行以下操作:

  • 右键单击服务器脚本并按run
  • 然后转到客户端脚本并按run
  • 他们应该一起跑步
  • 如果你想运行多个客户端脚本,那么在左手边的“运行”终端上会有图标,点击第二个图标,该图标表示“修改运行配置”(仅当你将鼠标悬停在上面时)
  • 单击“名称”字段右侧的复选框后,应显示“允许parrell运行”复选框,单击该复选框
  • 现在,您将能够同时运行多个客户端文件
  • 如果您没有Pycharm,请执行此操作(windows):

  • 进入你保存文件的目录
  • 按Shift+向右键
  • 这里将有一个打开powershell的选项单击该选项
  • 然后写“python” 并对其他文件执行相同的操作

  • 仅适用于PYTHON!!!!!

    如果使用windows,则可以打开多个“windows命令提示符”,如果使用基于linux的操作系统,则可以打开多个“终端”。

    如果使用windows,则可以打开多个“windows命令提示符”,如果使用基于linux的操作系统,则可以打开多个“终端”“

    我希望它自己打开那里的终端我希望它自己打开那里的终端我希望它自己打开,而不是我必须打开它。这将破坏整个脚本。你可以使用子流程模块完成所有这些我希望它自己打开,而不是我必须打开它。这将破坏整个脚本。您可以使用子流程模块来完成所有这一切
    
    file_list = ">file<list<"
    connection = "connection_script"
    
    import time
    import os
    import socket
    def_size = 0
    req_size = 900
    lv1_size = 1200
    admin_size = 10000000000
    wait_time = 1
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ip = socket.gethostbyname(socket.gethostname())
    print(f"ip = {ip}")
    time.sleep(1)
    
    print("finding open port")
    
    j = 0
    while True:
      j+=1
      print(j)
      try:
        s.bind((ip, j))
        port = j
        break
      except:
        print("failed")
    time.sleep(1)
    def clear():
      os.system('cls' if os.name == 'nt' else 'clear')
    clear()
    time.sleep(2)
    print(f"port is {port}")
    time.sleep(2)
    clear()
    print("opening connection for client")
    time.sleep(1)
    s.listen(1)
    clear()
    e = open(connection, "w")
    e.write(str(port))
    e.close()
    time.sleep(0.1)
    
    print("conection for client open")
    time.sleep(wait_time)
    e = open(connection, "w")
    e.write("")
    e.close()
    c, a = s.accept()
    print(f"connection made by {a}, conn is {c}")
    time.sleep(1)
    e = open("_file_list_", "r")
    p = e.read()
    e.close()
    s.sendall(bytes(p, "utf-8"))
    
    
    
    import socket
    import time
    
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ip = "192.168.1.65"
    port = 8080
    s.connect((ip, port))
    
    
    s.sendall(bytes(">><<", "utf-8"))
    b = s.recv(300)
    print(b)
    s.close()
    s.connect((ip, b))
    while True:
        print(s.recv(3000))
        s.sendall(bytes(input(), "utf-8"))