blob: f4e67878f6a2da47e16b9e107f4f0f56f82265f2 (
plain) (
blame)
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
|
#include <network/Socket.hpp>
Socket::Socket(std::string address, unsigned short port) {
sf::Socket::Status connectionStatus = socket.connect(sf::IpAddress(address), port);
if (connectionStatus == sf::Socket::Status::Error)
throw std::runtime_error("Can't connect to remote server");
else if (connectionStatus != sf::Socket::Status::Done)
throw std::runtime_error("Connection failed with unknown reason");
}
Socket::~Socket() {
socket.disconnect();
}
void Socket::Read(unsigned char *buffPtr, size_t buffLen) {
size_t received = 0;
socket.receive(buffPtr, buffLen, received);
size_t totalReceived = received;
while (totalReceived < buffLen) {
if (socket.receive(buffPtr + totalReceived, buffLen - totalReceived, received) != sf::Socket::Done)
throw std::runtime_error("Raw socket data receiving is failed");
totalReceived += received;
}
}
void Socket::Write(unsigned char *buffPtr, size_t buffLen) {
if (socket.send(buffPtr, buffLen) != sf::Socket::Done)
throw std::runtime_error("Raw socket data sending is failed");
}
|