동일 네트워크상에 있는 PC(A)와 PC(B..C..D)는 소켓통신으로 연결
마우스 좌표를 A에서 B, C, D로 옮겨 같은 위치로 이동시키는 예제입니다.
샘플 코드는 2대의 PC를 기준으로 작성되었으며, 코드 추가로 여러 대의 제어가 가능합니다.
먼저 이것은 기본값인 A에서 실행되는 코드입니다.
import socket
import pyautogui
# 연결할 PC의 IP 주소와 포트 번호입니다.
ip = "B의 IP 주소"
port = 12345
# 소켓 객체를 생성합니다.
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# PC에 연결합니다.
client_socket.connect((ip, port))
print("PC에 연결되었습니다.")
# 마우스 움직임을 감지합니다.
while True:
try:
# 현재 마우스 좌표를 가져옵니다.
x, y = pyautogui.position()
# PC로 메시지를 전송합니다.
message = f"{x},{y}"
client_socket.sendall(message.encode())
except Exception as e:
print(e)
# 소켓을 닫습니다.
client_socket.close()
아래는 B에서 실행되는 코드입니다.
import socket
import pyautogui
# 수신 대기할 IP 주소와 포트 번호입니다.
ip = "A의 IP 주소"
port = 12345
# 소켓 객체를 생성합니다.
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 서버의 IP 주소와 포트 번호를 바인드합니다.
server_socket.bind((ip, port))
# 클라이언트의 접속을 대기합니다.
server_socket.listen()
# 연결을 수락합니다.
print(f"{ip}:{port}로의 연결을 대기합니다...")
client_socket, address = server_socket.accept()
print(f"{address}에서 접속되었습니다.")
# 메시지를 수신합니다.
while True:
try:
# 수신 대기
data = client_socket.recv(1024)
if not data:
break
# 받은 메시지에서 마우스 좌표 추출
x, y = data.decode().split(",")
# 마우스 좌표 이동
pyautogui.moveTo(int(x), int(y))
except Exception as e:
print(e)
# 소켓을 닫습니다.
client_socket.close()
server_socket.close()