Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-08-2005, 13:39   #1
Rigo007
Member
 
L'Avatar di Rigo007
 
Iscritto dal: Oct 2001
Città: Trento
Messaggi: 164
[c/c++] Client-Server --> Peer-to-Peer

Ciao,

mi potete dire come trasformare questa semplice applicazione client/server in un applicazione peer-to-peer?
L'intenzione è quella di ascoltare da una porta e ricevere dati (in questo caso stringhe di caratteri) da un'altra porta lanciando
un' unica applicazione.
Magari utilizzando un menù nel caso si voglia inviare dati.

Thanks...


// UDP server

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h> // close()
#include <string> // memset()
#include <iostream>

using namespace std;

#define LOCAL_SERVER_PORT 7000
#define MAX_MSG 100

int main(int argc, char *argv[]) {

int sd, rc, n, cliLen;
struct sockaddr_in cliAddr, servAddr;
char msg[MAX_MSG];

// apertura della socket
sd = socket(AF_INET, SOCK_DGRAM, 0);
if (sd < 0) {
printf("%s: errore nell'apertura della socket \n",argv[0]);
exit(1);
}

// bind della porta 7000
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
servAddr.sin_port = htons(LOCAL_SERVER_PORT);

rc = bind(sd, (struct sockaddr *)&servAddr, sizeof(servAddr));
if (rc < 0) {
printf("%s: errore nella bind %d \n",argv[0],LOCAL_SERVER_PORT);
exit(1);
}

// loop infinito per la gestionde delle connessioni
while(1) {
// inizializziamo il buffer per la ricezione
memset(msg,0x0,MAX_MSG);

// ricezione messaggi
cliLen = sizeof(cliAddr);
n = recvfrom(sd, msg, MAX_MSG, 0, (struct sockaddr *)&cliAddr,(socklen_t *)&cliLen);
if (n < 0) {
printf("%s: impossibile ricevere dati \n",argv[0]);
continue;
}

// stampa il messaggio ricevuto
printf("%s: dati da %s:UDP%u : %s \n", argv[0],
inet_ntoa(cliAddr.sin_addr),
ntohs(cliAddr.sin_port),
msg);
}

return 0;
}


// UDP Client

#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <unistd.h> // close()
#include <string> // memset()
#include <iostream>

using namespace std;

#define REMOTE_SERVER_PORT 7000
#define MAX_MSG 100

int main(int argc, char *argv[]) {
int sd, rc, i;
struct sockaddr_in cliAddr, remoteServAddr;
struct hostent *h;

// controllo paramentri inseriti via riga di comando
if (argc < 3) {
printf("usage: %s <server> <data1> ... <dataN> \n", argv[0]);
exit(1);
}

// estrazione indirizzo IP dalla riga di comando
h = gethostbyname(argv[1]);
if (h == NULL) {
printf("%s: host sconosciuto '%s' \n", argv[0],argv[1]);
exit(1);
}

printf("%s: trasmissione dati a '%s' (IP : %s) \n", argv[0],
h->h_name,
inet_ntoa(*(struct in_addr *)h->h_addr_list[0]));

// creazione struttura dati sockaddr_in relativa al server remoto
remoteServAddr.sin_family = h->h_addrtype;
memcpy((char *)&remoteServAddr.sin_addr.s_addr, h->h_addr_list[0],
h->h_length);
remoteServAddr.sin_port = htons(REMOTE_SERVER_PORT);

// creazione socket e bind di una porta

// creazione socket
sd = socket(AF_INET, SOCK_DGRAM, 0);
if (sd < 0) {
printf("%s: impossibile aprire la socket \n",argv[0]);
exit(1);
}

// bind su una porta qualsiasi
cliAddr.sin_family = AF_INET;
cliAddr.sin_addr.s_addr = htonl(INADDR_ANY);
cliAddr.sin_port = htons(0);

rc = bind(sd, (struct sockaddr *)&cliAddr, sizeof(cliAddr));
if (rc < 0) {
printf("%s: impossibile aprire la porta %d \n",argv[0]);
exit(1);
}

// invio dati e chiusura socket

for(i=2;i<argc;i++) {
rc = sendto(sd, argv[i], strlen(argv[i])+1, 0,
(struct sockaddr *)&remoteServAddr,
sizeof(remoteServAddr));

if (rc < 0) {
printf("%s: trasmettere dati %d \n",argv[0], i-1);
close(sd);
exit(1);
}
}

return 1;
}
Rigo007 è offline   Rispondi citando il messaggio o parte di esso
Old 18-08-2005, 14:43   #2
Passy
Senior Member
 
L'Avatar di Passy
 
Iscritto dal: Jul 2000
Città: Vignola (MO)
Messaggi: 316
Mi interessa... vi seguo!
__________________
<Asus A8N-E Deluxe> <Amd64 3000+> <Ram 2.5 Gb> <Geffo3> <2 Maxtor 160 Gb RAID 1> <Adsl ZyXEL 645r> <ESS Maestro>
<GNU/Linux Debian Etch>
Wii 1037 4238 6261 1967
Passy è offline   Rispondi citando il messaggio o parte di esso
Old 19-08-2005, 08:55   #3
Blackat
Senior Member
 
L'Avatar di Blackat
 
Iscritto dal: Oct 2004
Città: Acireale
Messaggi: 447
Quote:
mi potete dire come trasformare questa semplice applicazione client/server in un applicazione peer-to-peer?
Ma che c'entra il P2P ?
Ma poi cosa intendi per "trasformare" ?
Quote:
L'intenzione è quella di ascoltare da una porta e ricevere dati (in questo caso stringhe di caratteri) da un'altra porta lanciando un' unica applicazione.
Basta che apri due porte....una dove ascolti e una dove ricevi.
Quote:
Magari utilizzando un menù nel caso si voglia inviare dati.
Ma il menù serve a sapere quanto costa l'invio di dati ?
Oppure per sapere quanto costa "il coperto" + "il vino" ?

Cerca di essere più chiaro.
__________________
Ho concluso acquisti e/o vendite con : SHIVA>>LuR<<, TheGaiden, ArvMau
Blackat è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Roscosmos: static fire per i propulsori ...
Alcune partite NBA saranno trasmesse in ...
Intel Core 13000 e 14000 aumentano uffic...
Gemini sta per arrivare in Google Maps: ...
2 minuti per vedere le 27 offerte imperd...
Ray-Ban Meta Display: tecnologia sorpren...
Un mini PC a prezzo stracciato, non cerc...
Al via i coupon nascosti di ottobre: qua...
Ferrari Elettrica si aggiorna solo in of...
Doppio sconto sugli smartphone top Xiaom...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
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: 18:30.


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