blob: 519da2fe8a086749cb931533e8570200f3e517b1 (
plain) (
tree)
|
|
#include <iostream>
#include "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");
}
|