|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1757
|
[C] Lato server non invia messaggio sul mailslot
Sto scrivendo un programma che dovrebbe simulare la posta elettronica in locale su un pc. Sono all'inizio e per ora sto cercando di far comunicare client e server e fargli fare le operazioni base.
Per la scrittura di una nuova mail non ho problemi, il client invia il messaggio su mailslot al server e questo lo salva in un file. Sto invece avendo problemi con la lettura delle mail. Il client inoltra la richiesta di lettura, il server la riceve correttamente, legge poi correttamente il file contenente la mail e la salva in un messaggio da inviare tramite mailslot al client, il problema nasce qui, ho sempre un errore di invio tramite mailslot. Mettendo stampe su console per vedere cosa funziona e cosa no è saltato fuori che la WriteFile della funzione LeggiDaFile del processo server non scrive nulla nel mailslot, la variabile numWritten che dovrebbe contenere il numero di bytes scritti vale sempre 0. - Codice Server - Codice Client Perché funzioni deve esserci un file "input.txt" nella stessa cartella da dove viene fatto partire il processo server con 4 righe che contengono rispettivamente mittente, destinatario, oggetto, testo, quindi una cosa del tipo: Pippo Topolino oggetto della mail testo di prova Riuscite a capire dov'è il problema? P.S. per vedere/scaricare i codici è necessario il copia-incolla dell'indirizzo sul browser. Ultima modifica di Alhazred : 23-07-2007 alle 07:56. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1757
|
Nessuno riesce a capire quale possa essere il problema?
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Prova a dare un'occhiata a
http://www.codeproject.com/internet/mailslots.asp. C'e' anche un esempio che puoi scaricare e far girare. Comunque la WriteFile() ritorna un valore di tipo booleano e non il numero di byte letti, il quale e' ritornato in un parametro di uscita (non ricordo quale, sorry). Pertanto dovrai fare anche una piccola modifica per testare correttamente il valore di ritorno.
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1757
|
Lo so cosa ritorna la WriteFile infatti l'ho messa dentro un if come condizione, il numero di bytes scritti lo ottengo leggendo il valore numWritten dopo aver eseguito la WriteFile e vale 0 invece di valere 404 (come nelle altre chiamate dove la uso), ovvero la dimensione del tipo di dato che uso per i messaggi.
Comunque ora darò un'occhiata al link che mi hai segnalato. Grazie ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:25.