Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
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.
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


Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
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ù...
Molte novità per MongoDB: version...
Cina, stop alle GPU NVIDIA: Pechino inti...
Google Pixel 10 con sconti super: ecco q...
Apple Mac mini con chip M4 a soli 598€ s...
DJI firma la rivoluzione: ecco il Mini 5...
Si spara in Friuli Venezia Giulia, ma so...
Trasformare una sigaretta elettronica us...
Addio ai clic inutili: arriva l'app Goog...
L'autobus elettrico interurbano di Merce...
Il PPE contro il Green Deal: 'Salviamo l...
AMD lancia in segreto quattro nuovi Ryze...
Maxi blitz contro lo streaming pirata: u...
PS5: oggi l'update che introduce il Powe...
Tesla apre le vendite del Cybertruck neg...
realme Watch 5: il nuovo smartwatch arri...
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: 14:50.


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