Made socket compile under Linux. Some functions still need to be implemented
This commit is contained in:
parent
0291473b01
commit
c94afb760e
1 changed files with 17 additions and 3 deletions
|
@ -15,17 +15,20 @@ int connectWrapper(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
|
||||||
class Socket::PrivateData {
|
class Socket::PrivateData {
|
||||||
public:
|
public:
|
||||||
SOCKET_T socket;
|
SOCKET_T socket;
|
||||||
|
bool connected;
|
||||||
};
|
};
|
||||||
|
|
||||||
Socket::Socket() {
|
Socket::Socket() {
|
||||||
d = new PrivateData;
|
d = new PrivateData;
|
||||||
d->socket = 0;
|
d->socket = 0;
|
||||||
|
d->connected = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Socket::Socket(SOCKET_T socket)
|
Socket::Socket(SOCKET_T socket)
|
||||||
{
|
{
|
||||||
d = new PrivateData;
|
d = new PrivateData;
|
||||||
d->socket = socket;
|
d->socket = socket;
|
||||||
|
d->connected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Socket::~Socket(void) {
|
Socket::~Socket(void) {
|
||||||
|
@ -35,31 +38,42 @@ Socket::~Socket(void) {
|
||||||
void Socket::connect(const std::wstring &server) {
|
void Socket::connect(const std::wstring &server) {
|
||||||
struct sockaddr_un remote;
|
struct sockaddr_un remote;
|
||||||
socklen_t len;
|
socklen_t len;
|
||||||
|
|
||||||
if ((d->socket = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
|
if ((d->socket = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::string name = "/tmp/" + std::string(server.begin(), server.end());
|
std::string name = "/tmp/" + std::string(server.begin(), server.end());
|
||||||
remote.sun_family = AF_UNIX;
|
remote.sun_family = AF_UNIX;
|
||||||
strcpy(remote.sun_path, name.c_str());
|
strcpy(remote.sun_path, name.c_str());
|
||||||
|
|
||||||
len = SUN_LEN(&remote);
|
len = SUN_LEN(&remote);
|
||||||
if (connectWrapper(d->socket, (struct sockaddr *)&remote, len) == -1) {
|
if (connectWrapper(d->socket, (struct sockaddr *)&remote, len) == -1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
d->connected = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Socket::isConnected(){
|
||||||
|
return d->connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::wstring Socket::read() {
|
std::wstring Socket::read() {
|
||||||
|
//TODO set d->conneted to false if something goes wrong
|
||||||
char inbuf[BUFSIZE];
|
char inbuf[BUFSIZE];
|
||||||
memset(inbuf, '\0', sizeof(inbuf));
|
memset(inbuf, '\0', sizeof(inbuf));
|
||||||
|
|
||||||
recv(d->socket, inbuf, BUFSIZE - 1, 0);
|
recv(d->socket, inbuf, BUFSIZE - 1, 0);
|
||||||
|
|
||||||
std::string msg(inbuf);
|
std::string msg(inbuf);
|
||||||
return std::wstring(msg.begin(), msg.end());
|
return std::wstring(msg.begin(), msg.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Socket::stopReadWait(){
|
||||||
|
//TODO:
|
||||||
|
}
|
||||||
|
|
||||||
void Socket::write(const std::wstring &msg) {
|
void Socket::write(const std::wstring &msg) {
|
||||||
|
//TODO set d->conneted to false if something goes wrong
|
||||||
std::string newMsg(msg.begin(), msg.end());
|
std::string newMsg(msg.begin(), msg.end());
|
||||||
send(d->socket, newMsg.c_str(), newMsg.length(), 0);
|
send(d->socket, newMsg.c_str(), newMsg.length(), 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue