Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-02-2010, 20: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, 20: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, 09: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


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Energia geotermica: la (costosa) rispost...
MG ha già venduto 1 milione di au...
"Something Big Is Happening" —...
Renault chiude il 2025 con una perdita r...
Le 34 migliori offerte Amazon di oggi: T...
Amazfit T-Rex Ultra 2 arriva su Amazon: ...
Meta chiude messenger.com: da aprile 202...
Il paradosso dell'IA: aumenta la produtt...
Oltre 2 TB di dati su un foglio A4: &egr...
Turboden realizza la più grande p...
SEGA pronta al debutto del misterioso 'S...
Microsoft ce l'ha fatta: adesso il 100% ...
Cuffie Hi-Res eleganti, con ANC e 100 or...
Processo a Meta, Zuckerberg difende Inst...
Password in pericolo: scoperte gravi lac...
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: 15:10.


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