• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdecore
 

tdecore

  • tdecore
  • network
kclientsocketbase.cpp
1 /*
2  * Copyright (C) 2003,2005 Thiago Macieira <thiago.macieira@kdemail.net>
3  *
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sublicense, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included
14  * in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24 
25 #include <config.h>
26 
27 #include <tqsocketnotifier.h>
28 #include <tqtimer.h>
29 #include <tqmutex.h>
30 
31 #include "tdesocketaddress.h"
32 #include "kresolver.h"
33 #include "tdesocketbase.h"
34 #include "tdesocketdevice.h"
35 #include "kclientsocketbase.h"
36 
37 using namespace KNetwork;
38 
39 class KNetwork::KClientSocketBasePrivate
40 {
41 public:
42  int state;
43 
44  KResolver localResolver, peerResolver;
45  KResolverResults localResults, peerResults;
46 
47  bool enableRead : 1, enableWrite : 1;
48 };
49 
50 KClientSocketBase::KClientSocketBase(TQObject *parent, const char *name) :
51 #ifdef USE_QT4
52 #else // USE_QT4
53  TQObject(parent, name),
54 #endif // USE_QT4
55  d(new KClientSocketBasePrivate)
56 {
57 #ifdef USE_QT4
58  setParent(parent);
59  setObjectName(name);
60 #endif // USE_QT4
61  d->state = Idle;
62  d->enableRead = true;
63  d->enableWrite = false;
64 }
65 
66 KClientSocketBase::~KClientSocketBase()
67 {
68  close();
69  delete d;
70 }
71 
72 KClientSocketBase::SocketState KClientSocketBase::state() const
73 {
74  return static_cast<SocketState>(d->state);
75 }
76 
77 void KClientSocketBase::setState(SocketState state)
78 {
79  d->state = state;
80  stateChanging(state);
81 }
82 
83 bool KClientSocketBase::setSocketOptions(int opts)
84 {
85  TQMutexLocker locker(mutex());
86  TDESocketBase::setSocketOptions(opts); // call parent
87 
88  // don't create the device unnecessarily
89  if (hasDevice())
90  {
91  bool result = socketDevice()->setSocketOptions(opts); // and set the implementation
92  copyError();
93  return result;
94  }
95 
96  return true;
97 }
98 
99 KResolver& KClientSocketBase::peerResolver() const
100 {
101  return d->peerResolver;
102 }
103 
104 const KResolverResults& KClientSocketBase::peerResults() const
105 {
106  return d->peerResults;
107 }
108 
109 KResolver& KClientSocketBase::localResolver() const
110 {
111  return d->localResolver;
112 }
113 
114 const KResolverResults& KClientSocketBase::localResults() const
115 {
116  return d->localResults;
117 }
118 
119 void KClientSocketBase::setResolutionEnabled(bool enable)
120 {
121  if (enable)
122  {
123  d->localResolver.setFlags(d->localResolver.flags() & ~KResolver::NoResolve);
124  d->peerResolver.setFlags(d->peerResolver.flags() & ~KResolver::NoResolve);
125  }
126  else
127  {
128  d->localResolver.setFlags(d->localResolver.flags() | KResolver::NoResolve);
129  d->peerResolver.setFlags(d->peerResolver.flags() | KResolver::NoResolve);
130  }
131 }
132 
133 void KClientSocketBase::setFamily(int families)
134 {
135  d->localResolver.setFamily(families);
136  d->peerResolver.setFamily(families);
137 }
138 
139 bool KClientSocketBase::lookup()
140 {
141  if (state() == HostLookup && !blocking())
142  return true; // already doing lookup
143 
144  if (state() > HostLookup)
145  return true; // results are already available
146 
147  if (state() < HostLookup)
148  {
149  if (d->localResolver.serviceName().isNull() &&
150  !d->localResolver.nodeName().isNull())
151  d->localResolver.setServiceName(TQString::fromLatin1(""));
152 
153  // don't restart the lookups if they had succeeded and
154  // the input values weren't changed
155  TQObject::connect(&d->peerResolver, TQT_SIGNAL(finished(KResolverResults)),
156  this, TQT_SLOT(lookupFinishedSlot()));
157  TQObject::connect(&d->localResolver, TQT_SIGNAL(finished(KResolverResults)),
158  this, TQT_SLOT(lookupFinishedSlot()));
159 
160  if (d->localResolver.status() <= 0)
161  d->localResolver.start();
162  if (d->peerResolver.status() <= 0)
163  d->peerResolver.start();
164 
165  setState(HostLookup);
166  emit stateChanged(HostLookup);
167 
168  if (!d->localResolver.isRunning() && !d->peerResolver.isRunning())
169  {
170  // if nothing is running, then the lookup results are still valid
171  // pretend we had done lookup
172  if (blocking())
173  lookupFinishedSlot();
174  else
175  TQTimer::singleShot(0, this, TQT_SLOT(lookupFinishedSlot()));
176  }
177  else
178  {
179  d->localResults = d->peerResults = KResolverResults();
180  }
181  }
182 
183  if (blocking())
184  {
185  // we're in blocking mode operation
186  // wait for the results
187 
188  localResolver().wait();
189  peerResolver().wait();
190 
191  // lookupFinishedSlot has been called
192  }
193 
194  return true;
195 }
196 
197 bool KClientSocketBase::bind(const KResolverEntry& address)
198 {
199  if (state() == HostLookup || state() > Connecting)
200  return false;
201 
202  if (socketDevice()->bind(address))
203  {
204  resetError();
205 
206  // don't set the state or emit signals if we are in a higher state
207  if (state() < Bound)
208  {
209  setState(Bound);
210  emit stateChanged(Bound);
211  emit bound(address);
212  }
213  return true;
214  }
215  return false;
216 }
217 
218 bool KClientSocketBase::connect(const KResolverEntry& address)
219 {
220  if (state() == Connected)
221  return true; // to be compliant with the other classes
222  if (state() == HostLookup || state() > Connecting)
223  return false;
224 
225  bool ok = socketDevice()->connect(address);
226  copyError();
227 
228  if (ok)
229  {
230  SocketState newstate;
231  if (error() == InProgress)
232  newstate = Connecting;
233  else
234  newstate = Connected;
235 
236  if (state() < newstate)
237  {
238  setState(newstate);
239  emit stateChanged(newstate);
240  if (error() == NoError)
241  {
242  setFlags(IO_Sequential | IO_Raw | IO_ReadWrite | IO_Open | IO_Async);
243  emit connected(address);
244  }
245  }
246 
247  return true;
248  }
249  return false;
250 }
251 
252 bool KClientSocketBase::disconnect()
253 {
254  if (state() != Connected)
255  return false;
256 
257  bool ok = socketDevice()->disconnect();
258  copyError();
259 
260  if (ok)
261  {
262  setState(Unconnected);
263  emit stateChanged(Unconnected);
264  return true;
265  }
266  return false;
267 }
268 
269 void KClientSocketBase::close()
270 {
271  if (state() == Idle)
272  return; // nothing to do
273 
274  if (state() == HostLookup)
275  {
276  d->peerResolver.cancel(false);
277  d->localResolver.cancel(false);
278  }
279 
280  d->localResults = d->peerResults = KResolverResults();
281 
282  socketDevice()->close();
283  setState(Idle);
284  emit stateChanged(Idle);
285  emit closed();
286 }
287 
288 // This function is unlike all the others because it is const
289 #ifdef USE_QT3
290 TQ_LONG KClientSocketBase::bytesAvailable() const
291 #endif
292 #ifdef USE_QT4
293 qint64 KClientSocketBase::bytesAvailable() const
294 #endif
295 {
296  return socketDevice()->bytesAvailable();
297 }
298 
299 // All the functions below look really alike
300 // Should I use a macro to define them?
301 
302 TQ_LONG KClientSocketBase::waitForMore(int msecs, bool *timeout)
303 {
304  resetError();
305  TQ_LONG retval = socketDevice()->waitForMore(msecs, timeout);
306  if (retval == -1)
307  {
308  copyError();
309  emit gotError(error());
310  }
311  return retval;
312 }
313 
314 TQT_TQIO_LONG KClientSocketBase::tqreadBlock(char *data, TQT_TQIO_ULONG maxlen)
315 {
316  resetError();
317  TQ_LONG retval = socketDevice()->tqreadBlock(data, maxlen);
318  if (retval == -1)
319  {
320  copyError();
321  emit gotError(error());
322  }
323  return retval;
324 }
325 
326 TQT_TQIO_LONG KClientSocketBase::tqreadBlock(char *data, TQT_TQIO_ULONG maxlen, TDESocketAddress& from)
327 {
328  resetError();
329  TQ_LONG retval = socketDevice()->tqreadBlock(data, maxlen, from);
330  if (retval == -1)
331  {
332  copyError();
333  emit gotError(error());
334  }
335  return retval;
336 }
337 
338 TQ_LONG KClientSocketBase::peekBlock(char *data, TQ_ULONG maxlen)
339 {
340  resetError();
341  TQ_LONG retval = socketDevice()->peekBlock(data, maxlen);
342  if (retval == -1)
343  {
344  copyError();
345  emit gotError(error());
346  }
347  return retval;
348 }
349 
350 TQ_LONG KClientSocketBase::peekBlock(char *data, TQ_ULONG maxlen, TDESocketAddress& from)
351 {
352  resetError();
353  TQ_LONG retval = socketDevice()->peekBlock(data, maxlen, from);
354  if (retval == -1)
355  {
356  copyError();
357  emit gotError(error());
358  }
359  return retval;
360 }
361 
362 TQT_TQIO_LONG KClientSocketBase::tqwriteBlock(const char *data, TQT_TQIO_ULONG len)
363 {
364  resetError();
365  TQ_LONG retval = socketDevice()->tqwriteBlock(data, len);
366  if (retval == -1)
367  {
368  copyError();
369  emit gotError(error());
370  }
371  return retval;
372 }
373 
374 TQT_TQIO_LONG KClientSocketBase::tqwriteBlock(const char *data, TQT_TQIO_ULONG len, const TDESocketAddress& to)
375 {
376  resetError();
377  TQ_LONG retval = socketDevice()->tqwriteBlock(data, len, to);
378  if (retval == -1)
379  {
380  copyError();
381  emit gotError(error());
382  }
383  return retval;
384 }
385 
386 TDESocketAddress KClientSocketBase::localAddress() const
387 {
388  return socketDevice()->localAddress();
389 }
390 
391 TDESocketAddress KClientSocketBase::peerAddress() const
392 {
393  return socketDevice()->peerAddress();
394 }
395 
396 bool KClientSocketBase::emitsReadyRead() const
397 {
398  return d->enableRead;
399 }
400 
401 void KClientSocketBase::enableRead(bool enable)
402 {
403  TQMutexLocker locker(mutex());
404 
405  d->enableRead = enable;
406  TQSocketNotifier *n = socketDevice()->readNotifier();
407  if (n)
408  n->setEnabled(enable);
409 }
410 
411 bool KClientSocketBase::emitsReadyWrite() const
412 {
413  return d->enableWrite;
414 }
415 
416 void KClientSocketBase::enableWrite(bool enable)
417 {
418  TQMutexLocker locker(mutex());
419 
420  d->enableWrite = enable;
421  TQSocketNotifier *n = socketDevice()->writeNotifier();
422  if (n)
423  n->setEnabled(enable);
424 }
425 
426 void KClientSocketBase::slotReadActivity()
427 {
428  if (d->enableRead)
429  emit readyRead();
430 }
431 
432 void KClientSocketBase::slotWriteActivity()
433 {
434  if (d->enableWrite)
435  emit readyWrite();
436 }
437 
438 void KClientSocketBase::lookupFinishedSlot()
439 {
440  if (d->peerResolver.isRunning() || d->localResolver.isRunning() || state() != HostLookup)
441  return;
442 
443  TQObject::disconnect(&d->peerResolver, 0L, this, TQT_SLOT(lookupFinishedSlot()));
444  TQObject::disconnect(&d->localResolver, 0L, this, TQT_SLOT(lookupFinishedSlot()));
445  if (d->peerResolver.status() < 0 || d->localResolver.status() < 0)
446  {
447  setState(Idle); // backtrack
448  setError(IO_LookupError, LookupFailure);
449  emit stateChanged(Idle);
450  emit gotError(LookupFailure);
451  return;
452  }
453 
454  d->localResults = d->localResolver.results();
455  d->peerResults = d->peerResolver.results();
456  setState(HostFound);
457  emit stateChanged(HostFound);
458  emit hostFound();
459 }
460 
461 void KClientSocketBase::stateChanging(SocketState newState)
462 {
463  if (newState == Connected && socketDevice())
464  {
465  TQSocketNotifier *n = socketDevice()->readNotifier();
466  if (n)
467  {
468  n->setEnabled(d->enableRead);
469  TQObject::connect(n, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotReadActivity()));
470  }
471  else
472  return;
473 
474  n = socketDevice()->writeNotifier();
475  if (n)
476  {
477  n->setEnabled(d->enableWrite);
478  TQObject::connect(n, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotWriteActivity()));
479  }
480  else
481  return;
482  }
483 }
484 
485 void KClientSocketBase::copyError()
486 {
487  setError(socketDevice()->status(), socketDevice()->error());
488 }
489 
490 #include "kclientsocketbase.moc"
KNetwork::TDESocketDevice::readNotifier
TQSocketNotifier * readNotifier() const
Returns a socket notifier for input on this socket.
Definition: tdesocketdevice.cpp:614
KNetwork::TDESocketAddress
A generic socket address.
Definition: tdesocketaddress.h:423
KNetwork::KClientSocketBase::state
SocketState state() const
Returns the current state for this socket.
Definition: kclientsocketbase.cpp:72
KNetwork::TDESocketDevice::disconnect
virtual bool disconnect()
Disconnects this socket.
Definition: tdesocketdevice.cpp:333
KNetwork::TDESocketBase::blocking
bool blocking() const
Retrieves this socket's blocking mode.
Definition: tdesocketbase.cpp:81
KNetwork::KResolverEntry
One resolution entry.
Definition: kresolver.h:66
KNetwork::TDESocketDevice::waitForMore
virtual TQ_LONG waitForMore(int msecs, bool *timeout=0L)
Returns the number of bytes available for reading without blocking.
Definition: tdesocketdevice.cpp:384
KNetwork::TDESocketBase::mutex
TQMutex * mutex() const
Returns the internal mutex for this class.
Definition: tdesocketbase.cpp:278
KNetwork::KActiveSocketBase::resetError
void resetError()
Resets the socket error code and the I/O Device's status.
Definition: tdesocketbase.cpp:315
KNetwork::KClientSocketBase::peerAddress
virtual TDESocketAddress peerAddress() const
Returns the peer socket address.
Definition: kclientsocketbase.cpp:391
KNetwork::TDESocketDevice::writeNotifier
TQSocketNotifier * writeNotifier() const
Returns a socket notifier for output on this socket.
Definition: tdesocketdevice.cpp:632
KNetwork::KResolver
Name and service resolution class.
Definition: kresolver.h:295
KNetwork::KClientSocketBase::lookup
virtual bool lookup()
Starts the lookup for peer and local hostnames as well as their services.
Definition: kclientsocketbase.cpp:139
KNetwork::KClientSocketBase::localResolver
KResolver & localResolver() const
Returns the internal KResolver object used for looking up the local host name and service...
Definition: kclientsocketbase.cpp:109
KNetwork::KClientSocketBase::slotReadActivity
virtual void slotReadActivity()
This slot is connected to the read notifier's signal meaning the socket can read more data...
Definition: kclientsocketbase.cpp:426
KNetwork::TDESocketBase::error
SocketError error() const
Retrieves the socket error code.
Definition: tdesocketbase.cpp:160
KNetwork::KClientSocketBase::gotError
void gotError(int code)
This signal is emitted when this object finds an error.
KNetwork::KClientSocketBase::hostFound
void hostFound()
This signal is emitted when the lookup is successfully completed.
KNetwork::KResolverResults
Name and service resolution results.
Definition: kresolver.h:197
KNetwork::TDESocketDevice::tqwriteBlock
virtual TQT_TQIO_LONG tqwriteBlock(const char *data, TQT_TQIO_ULONG len)
Writes data to the socket.
Definition: tdesocketdevice.cpp:506
KNetwork::KClientSocketBase::setSocketOptions
virtual bool setSocketOptions(int opts)
Sets the socket options.
Definition: kclientsocketbase.cpp:83
KNetwork::KClientSocketBase::peekBlock
virtual TQ_LONG peekBlock(char *data, TQ_ULONG maxlen)
Peeks data from the socket.
Definition: kclientsocketbase.cpp:338
KNetwork
A namespace to store all networking-related (socket) classes.
Definition: kbufferedsocket.h:36
KNetwork::KClientSocketBase::copyError
void copyError()
Convenience function to set this object's error code to match that of the socket device.
Definition: kclientsocketbase.cpp:485
KNetwork::KClientSocketBase::setResolutionEnabled
void setResolutionEnabled(bool enable)
Enables or disables name resolution.
Definition: kclientsocketbase.cpp:119
KNetwork::KResolver::wait
bool wait(int msec=0)
Waits for a request to finish resolving.
Definition: kresolver.cpp:461
KNetwork::KClientSocketBase::connect
virtual bool connect(const TQString &node=TQString::null, const TQString &service=TQString::null)=0
Attempts to connect to the these hostname and service, or use the default ones if none are given...
KNetwork::KActiveSocketBase::setError
void setError(int status, SocketError error)
Sets the socket's error code and the I/O Device's status.
Definition: tdesocketbase.cpp:309
KNetwork::KClientSocketBase::peerResults
const KResolverResults & peerResults() const
Returns the internal list of resolved results for the peer address.
Definition: kclientsocketbase.cpp:104
KNetwork::KClientSocketBase::SocketState
SocketState
Socket states.
Definition: kclientsocketbase.h:81
KNetwork::KClientSocketBase::connected
void connected(const KResolverEntry &remote)
This socket is emitted when the socket successfully connects to a remote address. ...
KNetwork::KClientSocketBase::setState
void setState(SocketState state)
Sets the socket state to state.
Definition: kclientsocketbase.cpp:77
KNetwork::KClientSocketBase::readyRead
void readyRead()
This signal is emitted whenever the socket is ready for reading – i.e., there is data to be read in ...
KNetwork::TDESocketBase::hasDevice
bool hasDevice() const
Returns true if the socket device has been initialised in this object, either by calling socketDevice...
Definition: tdesocketbase.cpp:150
KNetwork::KClientSocketBase::stateChanged
void stateChanged(int newstate)
This signal is emitted whenever the socket state changes.
KNetwork::KClientSocketBase::readyWrite
void readyWrite()
This signal is emitted whenever the socket is ready for writing – i.e., whenever there's space avail...
KNetwork::KClientSocketBase::bind
virtual bool bind(const TQString &node=TQString::null, const TQString &service=TQString::null)=0
Binds this socket to the given nodename and service, or use the default ones if none are given...
KNetwork::TDESocketBase::socketDevice
TDESocketDevice * socketDevice() const
Retrieves the socket implementation used on this socket.
Definition: tdesocketbase.cpp:116
KNetwork::KClientSocketBase::tqwriteBlock
virtual TQT_TQIO_LONG tqwriteBlock(const char *data, TQT_TQIO_ULONG len)
Writes data to the socket.
Definition: kclientsocketbase.cpp:362
KNetwork::TDESocketDevice::connect
virtual bool connect(const KResolverEntry &address)
Connect to a remote host.
Definition: tdesocketdevice.cpp:276
KNetwork::TDESocketDevice::tqreadBlock
virtual TQT_TQIO_LONG tqreadBlock(char *data, TQT_TQIO_ULONG maxlen)
Reads data from this socket.
Definition: tdesocketdevice.cpp:422
KNetwork::KClientSocketBase::disconnect
virtual bool disconnect()
Disconnects the socket.
Definition: kclientsocketbase.cpp:252
KNetwork::KClientSocketBase::bound
void bound(const KResolverEntry &local)
This signal is emitted when the socket successfully binds to an address.
KNetwork::KClientSocketBase::enableRead
virtual void enableRead(bool enable)
Enables the emission of the readyRead signal.
Definition: kclientsocketbase.cpp:401
KNetwork::KClientSocketBase::close
virtual void close()
Closes the socket.
Definition: kclientsocketbase.cpp:269
KNetwork::KClientSocketBase::~KClientSocketBase
virtual ~KClientSocketBase()
Destructor.
Definition: kclientsocketbase.cpp:66
KNetwork::KClientSocketBase::localAddress
virtual TDESocketAddress localAddress() const
Returns the local socket address.
Definition: kclientsocketbase.cpp:386
KNetwork::TDESocketDevice::setSocketOptions
virtual bool setSocketOptions(int opts)
This implementation sets the options on the socket.
Definition: tdesocketdevice.cpp:110
KNetwork::KClientSocketBase::stateChanging
virtual void stateChanging(SocketState newState)
This function is called by setState whenever the state changes.
Definition: kclientsocketbase.cpp:461
KNetwork::KClientSocketBase::waitForMore
virtual TQ_LONG waitForMore(int msecs, bool *timeout=0L)
Returns the number of bytes available on this socket.
Definition: kclientsocketbase.cpp:302
KNetwork::KClientSocketBase::setFamily
void setFamily(int families)
Sets the allowed families for the resolutions.
Definition: kclientsocketbase.cpp:133
KNetwork::KClientSocketBase::emitsReadyRead
bool emitsReadyRead() const
Returns true if the readyRead signal is set to be emitted.
Definition: kclientsocketbase.cpp:396
KNetwork::KClientSocketBase::localResults
const KResolverResults & localResults() const
Returns the internal list of resolved results for the local address.
Definition: kclientsocketbase.cpp:114
KNetwork::KClientSocketBase::emitsReadyWrite
bool emitsReadyWrite() const
Returns true if the readyWrite signal is set to be emitted.
Definition: kclientsocketbase.cpp:411
KNetwork::TDESocketDevice::peekBlock
virtual TQ_LONG peekBlock(char *data, TQ_ULONG maxlen)
Peeks data in the socket.
Definition: tdesocketdevice.cpp:464
KNetwork::KClientSocketBase::peerResolver
KResolver & peerResolver() const
Returns the internal KResolver object used for looking up the peer host name and service.
Definition: kclientsocketbase.cpp:99
KNetwork::TDESocketBase::setSocketOptions
virtual bool setSocketOptions(int opts)
Set the given socket options.
Definition: tdesocketbase.cpp:65
KNetwork::KClientSocketBase::enableWrite
virtual void enableWrite(bool enable)
Enables the emission of the readyWrite signal.
Definition: kclientsocketbase.cpp:416
KNetwork::TDESocketDevice::close
virtual void close()
Closes the socket.
Definition: tdesocketdevice.cpp:180
KNetwork::KClientSocketBase::closed
void closed()
This signal is emitted when the socket completes the closing/shut down process.
KNetwork::KClientSocketBase::slotWriteActivity
virtual void slotWriteActivity()
This slot is connected to the write notifier's signal meaning the socket can write more data...
Definition: kclientsocketbase.cpp:432
KNetwork::KClientSocketBase::tqreadBlock
virtual TQT_TQIO_LONG tqreadBlock(char *data, TQT_TQIO_ULONG maxlen)
Reads data from a socket.
Definition: kclientsocketbase.cpp:314
KNetwork::KClientSocketBase::KClientSocketBase
KClientSocketBase(TQObject *parent, const char *name)
Default constructor.
Definition: kclientsocketbase.cpp:50
KNetwork::TDESocketDevice::peerAddress
virtual TDESocketAddress peerAddress() const
Returns this socket's peer address.
Definition: tdesocketdevice.cpp:571
KNetwork::TDESocketDevice::localAddress
virtual TDESocketAddress localAddress() const
Returns this socket's local address.
Definition: tdesocketdevice.cpp:535

tdecore

Skip menu "tdecore"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdecore

Skip menu "tdecore"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  •     tdecore
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  • tdeioslave
  •   http
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdecore by doxygen 1.8.8
This website is maintained by Timothy Pearson.