private void ListeningForServerMessage(Socket client) { int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int byteRead = 0; try { while (true) { buffer.Initialize(); byteRead = client.Receive(buffer); if (byteRead > 0) { CustomMessage msg = MessageConveter.ByteArrayToMessage(buffer); //send mouse event to system SendMessageToSystem(msg); Console.WriteLine("MOUSE: " + msg.XPoint + '|' + msg.YPoint); NotifyReceivedDone(client); } } } catch (Exception) { throw; } }
private void NotifyReceivedDone(Socket socket) { CustomMessage message = new CustomMessage(MessageType.CommonMessage, CommonMessage.MSG_RECEIVED); byte[] bytes = MessageConveter.MessageToByteArray(message); socket.Send(bytes); }
public void SendKeyboardMessage(KeyboardState keyboardState, WindowsInput.Native.VirtualKeyCode virtualKeyCode) { lock (lookKeyboardMsg) { CustomMessage msg = new CustomMessage(MessageType.KeyboardMessage, keyboardState, virtualKeyCode); byte[] data = MessageConveter.MessageToByteArray(msg); this.socket.Send(data); WaitForMessageSendComplete(); } }
/// <summary> /// Send and wait for notify message from client. /// After send message, client respond must be received before send next messages /// </summary> /// <param name="message"></param> /// <param name="x"></param> /// <param name="y"></param> public void SendMouseMessage(MouseState mState, int x, int y) { lock (lookMouseMsg) { CustomMessage msg = new CustomMessage(MessageType.MouseMessage, mState, x, y); byte[] data = MessageConveter.MessageToByteArray(msg); this.socket.Send(data); WaitForMessageSendComplete(); } }
private void WaitForMessageSendComplete() { int bufferSize = 1024; byte[] bytes = new byte[bufferSize]; Socket.Receive(bytes); CustomMessage msg = MessageConveter.ByteArrayToMessage(bytes); if (msg.MsgType != MessageType.CommonMessage || msg.CommonMessage == CommonMessage.MSG_RECEIVED) { //Error case } }
/// <summary> /// Start listening for client connect request. /// Each connect must be verified before create new CLientPC object to handle this connection. /// </summary> public void StartListening() { //Start Listening // Data buffer for incoming data. int bufferSize = 1024; byte[] bytes = new Byte[bufferSize]; // Establish the local endpoint for the socket. // The DNS name of the computer // running the listener is "host.contoso.com". IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[5]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); // Create a TCP/IP socket. Socket listener = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); // Bind the socket to the local endpoint and listen for incoming connections. try { listener.Bind(localEndPoint); listener.Listen(100); while (true) { // Start an asynchronous socket to listen for connections. Console.WriteLine("Waiting for a connection..."); Socket handler = listener.Accept(); handler.Receive(bytes); CustomMessage msg = MessageConveter.ByteArrayToMessage(bytes); if (msg.MsgType == MessageType.CommonMessage) { //When a client send a connect request. //Main form will be informed by this EventHandler NotifyClientConnected(handler); } } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
public void StartConnect(IPAddress ipAddress, int port) { Task t = new Task(() => { try { IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port); Socket client = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); client.Connect(ipEndPoint); int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int byteRead = 0; CustomMessage reqConnMessage = new CustomMessage(MessageDefinition.MessageType.CommonMessage, MessageDefinition.CommonMessage.CONN_REQ); buffer = MessageConveter.MessageToByteArray(reqConnMessage); client.Send(buffer); buffer.Initialize(); byteRead = client.Receive(buffer); if (byteRead > 0) { CustomMessage msg = MessageConveter.ByteArrayToMessage(buffer); if (msg.MsgType == MessageType.CommonMessage && msg.CommonMessage == CommonMessage.CONN_ACCEPT) { ConnAcceptedEvent(client); } } } catch (Exception e) { Console.WriteLine(e.ToString()); throw; } }); t.Start(); }