PIEthernet send to custom address fix
This commit is contained in:
@@ -621,6 +621,57 @@ bool PIEthernet::listen(bool threaded) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PIEthernet::listen(const PIEthernet::Address & addr, bool threaded) {
|
||||||
|
setReadAddress(addr);
|
||||||
|
return listen(threaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PIEthernet::send(const void * data, int size, bool threaded) {
|
||||||
|
if (threaded) {
|
||||||
|
writeThreaded(data, size);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return (write(data, size) == size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PIEthernet::send(const PIEthernet::Address & addr, const void * data, int size, bool threaded) {
|
||||||
|
addr_s = addr;
|
||||||
|
if (threaded) {
|
||||||
|
writeThreaded(data, size);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Address pa = addr_s;
|
||||||
|
addr_s = addr;
|
||||||
|
int wr = write(data, size);
|
||||||
|
addr_s = pa;
|
||||||
|
return (wr == size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PIEthernet::send(const PIByteArray & data, bool threaded) {
|
||||||
|
if (threaded) {
|
||||||
|
writeThreaded(data);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return (write(data) == data.size_s());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PIEthernet::send(const PIEthernet::Address & addr, const PIByteArray & data, bool threaded) {
|
||||||
|
if (threaded) {
|
||||||
|
writeThreaded(data);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Address pa = addr_s;
|
||||||
|
addr_s = addr;
|
||||||
|
int wr = write(data);
|
||||||
|
addr_s = pa;
|
||||||
|
return (wr == data.size_s());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int PIEthernet::readDevice(void * read_to, int max_size) {
|
int PIEthernet::readDevice(void * read_to, int max_size) {
|
||||||
//piCout << "read" << sock;
|
//piCout << "read" << sock;
|
||||||
if (sock == -1) init();
|
if (sock == -1) init();
|
||||||
|
|||||||
@@ -273,13 +273,13 @@ public:
|
|||||||
bool listen(bool threaded = false);
|
bool listen(bool threaded = false);
|
||||||
|
|
||||||
//! Start listen for incoming TCP connections on address "ip":"port". Use only for TCP_Server
|
//! Start listen for incoming TCP connections on address "ip":"port". Use only for TCP_Server
|
||||||
bool listen(const PIString & ip, int port, bool threaded = false) {setReadAddress(ip, port); return listen(threaded);}
|
bool listen(const PIString & ip, int port, bool threaded = false) {return listen(PIEthernet::Address(ip, port), threaded);}
|
||||||
|
|
||||||
//! Start listen for incoming TCP connections on address "ip_port". Use only for TCP_Server
|
//! Start listen for incoming TCP connections on address "ip_port". Use only for TCP_Server
|
||||||
bool listen(const PIString & ip_port, bool threaded = false) {setReadAddress(ip_port); return listen(threaded);}
|
bool listen(const PIString & ip_port, bool threaded = false) {return listen(PIEthernet::Address(ip_port), threaded);}
|
||||||
|
|
||||||
//! Start listen for incoming TCP connections on address "addr". Use only for TCP_Server
|
//! Start listen for incoming TCP connections on address "addr". Use only for TCP_Server
|
||||||
bool listen(const Address & addr, bool threaded = false) {setReadAddress(addr); return listen(threaded);}
|
bool listen(const Address & addr, bool threaded = false);
|
||||||
|
|
||||||
PIEthernet * client(int index) {return clients_[index];}
|
PIEthernet * client(int index) {return clients_[index];}
|
||||||
int clientsCount() const {return clients_.size_s();}
|
int clientsCount() const {return clients_.size_s();}
|
||||||
@@ -287,28 +287,28 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//! Send data "data" with size "size" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client
|
//! Send data "data" with size "size" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client
|
||||||
bool send(const void * data, int size, bool threaded = false) {if (threaded) {writeThreaded(data, size); return true;} return (write(data, size) == size);}
|
bool send(const void * data, int size, bool threaded = false);
|
||||||
|
|
||||||
//! Send data "data" with size "size" to address "ip":"port"
|
//! Send data "data" with size "size" to address "ip":"port"
|
||||||
bool send(const PIString & ip, int port, const void * data, int size, bool threaded = false) {addr_s.set(ip, port); if (threaded) {writeThreaded(data, size); return true;} return send(data, size);}
|
bool send(const PIString & ip, int port, const void * data, int size, bool threaded = false) {return send(PIEthernet::Address(ip, port), data, size, threaded);}
|
||||||
|
|
||||||
//! Send data "data" with size "size" to address "ip_port"
|
//! Send data "data" with size "size" to address "ip_port"
|
||||||
bool send(const PIString & ip_port, const void * data, int size, bool threaded = false) {addr_s.set(ip_port); if (threaded) {writeThreaded(data, size); return true;} return send(data, size);}
|
bool send(const PIString & ip_port, const void * data, int size, bool threaded = false) {return send(PIEthernet::Address(ip_port), data, size, threaded);}
|
||||||
|
|
||||||
//! Send data "data" with size "size" to address "addr"
|
//! Send data "data" with size "size" to address "addr"
|
||||||
bool send(const Address & addr, const void * data, int size, bool threaded = false) {addr_s = addr; if (threaded) {writeThreaded(data, size); return true;} return send(data, size);}
|
bool send(const Address & addr, const void * data, int size, bool threaded = false);
|
||||||
|
|
||||||
//! Send data "data" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client
|
//! Send data "data" to address \a sendAddress() for UDP or \a readAddress() for TCP_Client
|
||||||
bool send(const PIByteArray & data, bool threaded = false) {if (threaded) {writeThreaded(data); return true;} return (write(data) == data.size_s());}
|
bool send(const PIByteArray & data, bool threaded = false);
|
||||||
|
|
||||||
//! Send data "data" to address "ip":"port" for UDP
|
//! Send data "data" to address "ip":"port" for UDP
|
||||||
bool send(const PIString & ip, int port, const PIByteArray & data, bool threaded = false) {addr_s.set(ip, port); if (threaded) {writeThreaded(data); return true;} return send(data);}
|
bool send(const PIString & ip, int port, const PIByteArray & data, bool threaded = false) {return send(PIEthernet::Address(ip, port), data, threaded);}
|
||||||
|
|
||||||
//! Send data "data" to address "ip_port" for UDP
|
//! Send data "data" to address "ip_port" for UDP
|
||||||
bool send(const PIString & ip_port, const PIByteArray & data, bool threaded = false) {addr_s.set(ip_port); if (threaded) {writeThreaded(data); return true;} return (write(data) == data.size_s());}
|
bool send(const PIString & ip_port, const PIByteArray & data, bool threaded = false) {return send(PIEthernet::Address(ip_port), data, threaded);}
|
||||||
|
|
||||||
//! Send data "data" to address "addr" for UDP
|
//! Send data "data" to address "addr" for UDP
|
||||||
bool send(const Address & addr, const PIByteArray & data, bool threaded = false) {addr_s = addr; if (threaded) {writeThreaded(data); return true;} return (write(data) == data.size_s());}
|
bool send(const Address & addr, const PIByteArray & data, bool threaded = false);
|
||||||
|
|
||||||
virtual bool canWrite() const {return mode() & WriteOnly;}
|
virtual bool canWrite() const {return mode() & WriteOnly;}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user