|

楼主 |
发表于 2021-3-7 10:12:45
|
显示全部楼层
- import socket
- import sys
- import threading
- import time
- class EchoServer():
- def __init__(self, server_host, server_port):
- self.server_host = server_host
- self.server_port = server_port
- self.server_backlog = 1
- self.start()
- def start(self):
- # Initialize server socket on which to listen for connections
- try:
- server_sock = socket.socket(
- socket.AF_INET, socket.SOCK_STREAM)
- server_sock.bind((self.server_host, self.server_port))
- server_sock.listen(self.server_backlog)
- except OSError as e:
- print ('Unable to open socket: ', e)
- if server_sock:
- server_sock.close()
- sys.exit(1)
- # Wait for client connection
- while True:
- # Client has connected
- [client_conn, client_addr] = server_sock.accept()
- print ('Client has connected with address: ', client_addr)
- # Create thread to serve client
- thread = threading.Thread(
- target = self.serve_content,
- args = (client_conn, client_addr))
- thread.daemon = True
- thread.start()
- server_sock.close()
- def serve_content(self, client_conn, client_addr):
- a=['a','b','c','d','e','f','g','h','i']
- print ('Serving content to client with address', client_addr)
- # Receive data from client
- bin_data = client_conn.recv(1024)
- # Echo back received data to client
- for i in a:
- bin_data=i
- client_conn.sendall(bin_data.encode())
- print(i)
- time.sleep(1)
-
-
-
-
- # Close connection to client
- client_conn.close()
- def main():
- # Echo server socket parameters
- server_host = 'localhost'
- server_port = 50008
- # Parse command line parameters if any
- if len(sys.argv) > 1:
- server_host = sys.argv[1]
- server_port = int(sys.argv[2])
- # Create EchoServer object
- server = EchoServer(server_host, server_port)
-
- if __name__ == '__main__':
- try:
- main()
- except KeyboardInterrupt:
- print("Shutting down")
- except Exception:
- print("Other exception")
复制代码
- import socket
- import sys
- import time
- class EchoClient():
- def __init__(self, server_host, server_port):
- self.start(server_host, server_port)
- def start(self, server_host, server_port):
- # Try to connect to echo server
- try:
- server_sock = socket.socket(
- socket.AF_INET, socket.SOCK_STREAM)
- server_sock.connect((server_host, server_port))
- except OSError as e:
- print ('Unable to connect to socket: ', e)
- if server_sock:
- server_sock.close()
- sys.exit(1)
- # Send message string to server over socket
- str_msg = input("Please enter the words you want to search Like(a?t):")
- bin_msg = str_msg.encode('utf-8')
- server_sock.sendall(bin_msg)
- # Get response data from server and print it
- while(server_sock.recv(1024)):
- bin_resp = server_sock.recv(1024)
- str_resp = bin_resp.decode('utf-8')
- print ('Client received', str_resp)
-
-
- # Close server socket
- server_sock.close()
- def main():
- # Echo server socket parameters
- server_host = 'localhost'
- server_port = 50008
- # Parse command line parameters if any
- if len(sys.argv) > 1:
- server_host = sys.argv[1]
- server_port = int(sys.argv[2])
- # Create EchoClient object
- client = EchoClient(server_host, server_port)
- if __name__ == '__main__':
- main()
复制代码
这是源了 |
|