客户端和服务器都在一个文件上工作

Both client and server works on one file

所以我有一个使用套接字的程序,它只接受连接,server.py 文件监听一个 client.py 文件,但是如果我想让它做到这两个文件都可以监听和连接。

例如: 这是我的 server.py

 def main():
    print("[STARTING] Server is starting...")
    """ Starting a TCP socket """
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    server.bind(ADDR)

    server.listen()
    print("[LISTENING] Server is listening...")

    
    while True:
        """ Accept the connection from the client """
        conn, addr = server.accept()
        addr = socket.gethostname()
        print(f"[NEW CONNECTION] {addr} connected.")

这是我的 client.py

 def main():
    """ Staring a TCP socket. """
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    while True:
        """ Connecting to the server. """
        client.connect(ADDR)

我怎样才能在一个文件(如“Server-Client.py”中同时执行这两项操作? 所以如果我想在一台计算机上使用 Server-Client.py 作为客户端,它可以使用客户端, 如果我想将 Server-client.py 用作另一台计算机上的服务器,它可以用作服务器,反之亦然。

有什么想法吗?

将服务器代码放在一个函数中,将客户端代码放在另一个函数中。然后根据用户请求的是“客户端”还是“服务器”来调用相应的函数。

import sys

def client():
    # client code here

def server():
    # server code here

if __name__ == '__main__':
    if sys.argv[1] == 'client':
        client()

    elif sys.argv[1] == 'server':
        server()