Guten Tag sehr geehrter forenlesender Mensch.
Ich versuche derzeit eine Mauszeigerposition in Echtzeit, unter Zuhilfenahme der SFML-Netzwerkschnittstelle, per TCP an einen zweiten Rechner zu senden welcher dann nach einer kleinen Umrechnung die Mauszeigerposition übernimmt. Dies funktioniert soweit auch ganz gut. Jedoch stockt/laggt der Mauszeiger auf dem Clientrechner alle paar Sekunden. Ich bin mir jedoch nicht sicher wieso und wäre sehr dankbar wenn sich jemand mal den weiter unten zu findenden Code ansieht.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
void Client ()
{
while (Run)
{
Socket.setBlocking (true);
sf::Packet PacketRecieve;
Socket.receive (PacketRecieve);
sf::Vector2i temp;
PacketRecieve >> temp.x >> temp.y;
mtx.lock ();
MousePosition.x = temp.x;
MousePosition.y = temp.y;
mtx.unlock ();
if (MousePosition.x != OldVec.x || MousePosition.y != OldVec.y)
{
OldVec.x = MousePosition.x;
OldVec.y = MousePosition.y;
}
}
}
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
void Server ()
{
while (Run)
{
ClientSocket.setBlocking (true);
if (MouseMovement.Change)
{
sf::Packet PacketSend;
sf::Vector2i temp;
temp.x = MousePosition.x;
temp.y = MousePosition.y;
if (temp != OldVec)
{
mtx.lock ();
PacketSend << temp.x << temp.y;
mtx.unlock ();
ClientSocket.send (PacketSend);
OldVec = temp;
}
MouseMovement.Change = false;
}
}
}
|