Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-02-2010, 19:08   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C] Ascoltare connessione su più porte

Ciao a tutti.

Sto iniziando a sviluppare un semplice mail server. Visto che dovrò testare poi il mail server con i comandi SMTP e POP3 descritti nelle RFC, ho bisogno di capire come posso mettermi in ascolto sulla porta 110 e 25 contemporaneamente. Ho provato a creare 2 socket uno per l'SMTP e uno per il POP3 ma riesco a collegarmi con Telnet solo tramite SMTP.

Questa è la funzione che ho creato per impostare i socket:
Codice:
 //POP3Socket e SMTPSocket sono definite extern
//cfgParams sono i parametri di configurazione del server letti da un file
void setWinSocket()
{
	WSADATA WSStartData;
	if(WSAStartup(MAKEWORD (2,2), &WSStartData) != 0)
		PrintError("Can't support socket:");
	struct sockaddr_in POP3SAddr;
	struct sockaddr_in SMTPSAddr;       
	POP3Socket = socket(PF_INET,SOCK_STREAM,0);
	SMTPSocket = socket(PF_INET,SOCK_STREAM,0);
	if(POP3Socket == INVALID_SOCKET)
		PrintError("Failed POP3 socket() call");
	if(SMTPSocket == INVALID_SOCKET)
		PrintError("Failed SMTP socket() call");
	memset(&POP3SAddr,0,sizeof(POP3SAddr));
	memset(&SMTPSAddr,0,sizeof(SMTPSAddr));
	POP3SAddr.sin_family = AF_INET;
	POP3SAddr.sin_port = htons((cfgParams->POP3Port));
	SMTPSAddr.sin_family = AF_INET;
	SMTPSAddr.sin_port = htons((cfgParams->SMTPPort));
	if(bind(POP3Socket,&POP3SAddr,sizeof(struct sockaddr_in)) == SOCKET_ERROR)
		PrintError("Failed POP3 bind() call:");
	if(bind(SMTPSocket,&SMTPSAddr,sizeof(struct sockaddr_in)) == SOCKET_ERROR)
		PrintError("Failed SMTP bind() call:");	
	if (listen(POP3Socket,cfgParams->numOfThrds) != 0)
		PrintError("POP3 listen() error");
	if (listen(SMTPSocket,cfgParams->numOfThrds) != 0)
		PrintError("SMTP listen() error");
}

/*tArgs è una stuttura dati che contiene i parametri passati al Thread incaricato di gestire le nuove connessioni in arrivo. E' definita nel seguente modo:
typedef struct{
		int num;
		int POP3Port;
		int SMTPPort;
		int status;  // 0 = Free slot, 1 = Thread stopped, 2 = Thread running, 3 = Shutdown request, 4 = Re-read config file
		SOCKET POP3Socket; 
		SOCKET SMTPSocket; 
		HANDLE srv_thd;
	} THRD_PARAMS;
*/
static DWORD WINAPI ThrdConn(THRD_PARAMS *tArgs)
{
	LONG AddrLen, ThId;
	tArgs->POP3Socket = accept (POP3Socket, (struct sockaddr *)&ConnPOP3SAddr, &AddrLen);
	if (tArgs->POP3Socket == INVALID_SOCKET) {
		PrintError("POP3 accept() error:");
	}
	tArgs->SMTPSocket = accept (SMTPSocket, (struct sockaddr *)&ConnSMTPSAddr, &AddrLen);
	if (tArgs->SMTPSocket == INVALID_SOCKET) {
		PrintError("SMTP accept() error:");
	}
	tArgs->status = 2;
	tArgs->srv_thd = (HANDLE)_beginthreadex (NULL, 0, AcceptCommands, tArgs, 0, &ThId);
	if (tArgs->srv_thd == NULL) 
		PrintError("Failed creating server thread");
	return 0;
}
Non capisco dov'è che sbaglio.
__________________
Intel Core 2 Duo Q6600 G0, 4GB DDR2-800 A-Data, ABIT AB9, XFX GeForce 8800 GTS 320MB, Sound Blaster X-Fi Extreme Music, Seagate 320GB SATA2, Maxtor 80GB ATA-133, Western Digital 1TB SATA2

Ho concluso affari positivamente con: scandalf, Sinclair63, mstella, checcodag, wilson
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2010, 19:52   #2
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ho risolto il problema creando due thread separati, uno per la connessione POP3 e uno per la connessione SMTP. Grazie lo stesso.
__________________
Intel Core 2 Duo Q6600 G0, 4GB DDR2-800 A-Data, ABIT AB9, XFX GeForce 8800 GTS 320MB, Sound Blaster X-Fi Extreme Music, Seagate 320GB SATA2, Maxtor 80GB ATA-133, Western Digital 1TB SATA2

Ho concluso affari positivamente con: scandalf, Sinclair63, mstella, checcodag, wilson
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2010, 08:42   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Manugal Guarda i messaggi
Ho risolto il problema creando due thread separati, uno per la connessione POP3 e uno per la connessione SMTP. Grazie lo stesso.
Esattamente, è la cosa migliore. In teoria spesso POP3 e SMTP sono due servizi separati (infatti su una macchina potresti averne uno senza avere l'altro). Ti consiglio di separarli.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Object First annuncia la disponibilit&ag...
Apple lancia Music Transfer Tool: import...
Mario Draghi critica gli obiettivi green...
Dimensity 9500 promette prestazioni da p...
HybridPetya, il ransomware che può...
Apple Mac mini con chip M4 a prezzi mai ...
Alphabet, società madre di Google...
Incidente con Tesla in Svizzera: il prop...
Shein chiude a Stradella e si sposta in ...
Cosa ci ha detto IAA Mobility 2025? Elet...
Meta Ray-Ban Display trapelati in video:...
Titan Army e una nuova tecnologia che ca...
GPT-5-Codex ufficiale: è l'assist...
Microsoft anticipa la dashboard delle Xb...
Volkswagen posticipa due auto elettriche...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v