01-02-2010, 12:45
|
#7
|
|
Senior Member
Iscritto dal: Aug 2008
Cittā: Firenze
Messaggi: 317
|
Quote:
Originariamente inviato da fero86
questa é quella che io chiamo "pompa di I/O" (scritta or ora, codice non testato, spero renda l'idea):
Codice:
void IoPump(int fdSource, int fdSink) {
const size_t cbBuffer = 0x1000;
char pBuffer[cbBuffer];
while (1) {
ssize_t nResult = read(fdSource, pBuffer, cbBuffer);
if (nResult < 0) {
return;
}
size_t cbRead = (size_t)nResult;
size_t cbWritten = 0;
while (cbWritten < cbRead) {
nResult = write(fdSink, pBuffer + cbWritten, cbRead - cbWritten);
if (nResult < 0) {
return;
}
cbWritten += (size_t)nResult;
}
}
}
ora immaginati di avere un socket descriptor in una variabile di nome "s" ed immaginati di far partire due thread; uno dei due thread invoca:
e l'altro invoca:
fine; hai fatto la chat.
|
Grazie mille per la spiegazione...appena ho un po di tempo cerco di mettere in pratica
|
|
|