import socket
import time
ENCODING ="UTF-8"
CMD_SEND ="pwd2"
CMD_RECV ="pwd"
HOST ="192.168.0.110"
PORT =666defserver_start(host, port):"""
Virtual machine as server, host="192.168.118.128"
Laptop as client, host="192.168.118.128"
"""
mode ="recv"
server = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
server.bind((host, port))
server.listen(1)print(f"\033[0;31m[服务端 {time.strftime('%H:%M:%S', time.localtime(time.time()))}] "f"Waiting for connection ..."f"\033[0m")whileTrue:
conn, address = server.accept()whileTrue:if mode =="recv":# Receive
data_recv = conn.recv(1024)iflen(data_recv)>0:print(f"\033[0;31m[服务端 {time.strftime('%H:%M:%S', time.localtime(time.time()))}] "f"{data_recv.decode(encoding=ENCODING)}"f"\033[0m")# Send
conn.send(bytes("Ok", encoding=ENCODING))else:breakif data_recv.decode(encoding=ENCODING)== CMD_RECV:
mode ="send"elif mode =="send":
data =input(f"\033[0;32m[服务端 {time.strftime('%H:%M:%S', time.localtime(time.time()))}] \033[0m")iflen(data)==0or data in["exit","quit","q"]:break
conn.send(bytes(data, encoding=ENCODING))
data_recv = conn.recv(1024)iflen(data_recv)>0:print(f"\033[0;32m[客户端 {time.strftime('%H:%M:%S', time.localtime(time.time()))}] "f"{data_recv.decode(encoding=ENCODING)}"f"\033[0m")if data == CMD_SEND:
mode ="recv"
conn.close()break
server.close()if __name__ =="__main__":
server_start(host=HOST, port=PORT)
client.py
import socket
import time
ENCODING ="UTF-8"
CMD_SEND ="pwd2"# The client converts to the sender when a command is entered on the server end.
CMD_RECV ="pwd"# The client converts to the receiver when a command is entered on the client end.
HOST ="192.168.0.110"
PORT =666defclient_start(host, port):
mode ="send"
client = socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
client.connect((host, port))try:whileTrue:if mode =="send":
data =input(f"\033[0;32m[客户端 {time.strftime('%H:%M:%S', time.localtime(time.time()))}] \033[0m")iflen(data)==0or data in["exit","quit","q"]:break# Send
client.send(bytes(data, encoding=ENCODING))# Receive
data_recv = client.recv(1024)iflen(data_recv)>0:print(f"\033[0;32m[客户端 {time.strftime('%H:%M:%S', time.localtime(time.time()))}] "f"{data_recv.decode(encoding=ENCODING)}"f"\033[0m")if data == CMD_RECV:
mode ="recv"elif mode =="recv":
data_recv = client.recv(1024)iflen(data_recv)>0:print(f"\033[0;31m[客户端 {time.strftime('%H:%M:%S', time.localtime(time.time()))}] "f"{data_recv.decode(encoding=ENCODING)}"f"\033[0m")
client.send(bytes("Ok", encoding=ENCODING))else:breakif data_recv.decode(encoding=ENCODING)== CMD_SEND:
mode ="send"except Exception as e:print(e)
client.close()if __name__ =="__main__":
client_start(host=HOST, port=PORT)