Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-10-2009, 17:41   #1
SandroDe
Junior Member
 
Iscritto dal: Oct 2009
Messaggi: 7
[C] Struct IP

Se dovessi memorizzare un IP e non volessi utilizzare una struct stringa, come potrei fare?
SandroDe è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2009, 18:00   #2
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Dipende... cosa ci devi fare?

Potresti usare un array di 4 unsigned char (per IPv4), se hai bisogno dei singoli gruppi nella notazione decimale puntata. Non dimenticare poi che un indirizzo IPv4 in realtà altro non è che un numero a 32 bit. Quindi ti basta un qualsiasi unsigned purchè sia tale che sizeof(questo_unsigned) >= 4.
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2009, 18:32   #3
SandroDe
Junior Member
 
Iscritto dal: Oct 2009
Messaggi: 7
Mi serve perchè devo legare l'ip alla socket lato server.
Quindi non so se una struct di tipo string , passata come argomento ad una inet_addr vada bene; visto che io ho visto una inet_addr ricevere un indirizzo IP

Ultima modifica di SandroDe : 20-10-2009 alle 18:37.
SandroDe è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2009, 18:59   #4
Ikon O'Cluster
Registered User
 
Iscritto dal: May 2009
Messaggi: 300
Ah ok... allora usi i socket BSD. Estraggo dai miei appunti di qualche anno fà:

- Esempio di inizializzazione delle struttura dati per gli indirizzi

Codice:
char* ip_address[256] = “192.168.1.1”;
unsigned short int tcp_port_number = “1234”;
struct sockaddr_in endpoint;

bzero(&endpoint, sizeof(endpoint));
endpoint.sin_family = AF_INET;
endpoint.sin_port = htons(tcp_port_number);
----------------------------------------------------------------------
/* Indicazione di un indirizzo specifico (192.168.1.1): */
endpoint.sin_addr.s_addr = inet_addr(ip_address);
----------------------------------------------------------------------
/* Alternativa: */
inet_pton(AF_INET, ip_address, &endpoint.sin_addr);
----------------------------------------------------------------------
/* Per indicare un indirizzo generico: */
endpoint.sin_addr.s_addr = INADDR_ANY;
- Esempio di creazione di socket TCP (se hai bisogno di UDP ho anche quello e anche per il multicast ho qualcosa)

Codice:
int client(const char* ip_addr, int tcp_port) {
      int ret;

      int sv_sd = socket(PF_INET, SOCK_STREAM, 0);
      if(sv_sd < 0) return -1;

      struct sockaddr_in sv_addr;
      bzero(&sv_addr, sizeof(sv_addr));

      sv_addr.sin_family = AF_INET;
      sv_addr.sin_port = htons(tcp_port);
      sv_addr.sin_addr.s_addr = inet_addr(ip_addr);

      ret = connect(sv_sd, (struct sockaddr*)&sv_addr, sizeof(sv_addr));
      if(ret < 0) return -1;

      return sv_sd;
}

int server(unsigned short int tcp_port, int queue_len, int non_blocking, int reuse) {
      int ret;
      int sv_sd = socket(PF_INET, SOCK_STREAM, 0);

      if(sv_sd < 0) return -1;

      struct sockaddr_in sv_addr;
      bzero(&sv_addr, sizeof(sv_addr));

      sv_addr.sin_family = AF_INET;
      sv_addr.sin_port = htons(tcp_port);
      sv_addr.sin_addr.s_addr = INADDR_ANY;

      ret = bind(sv_sd, (struct sockaddr*)&sv_addr, sizeof(sv_addr));
      if(ret < 0) return -1;

      ret = listen(sv_sd, queue_len);
      if(ret < 0) return -1;

      int val;

      if(non_blocking) {
              val = fcntl(sv_sd, F_GETFL, NULL);
              fcntl(sv_sd, F_SETFL, value | O_NONBLOCK);
              val = 1;
      }

      if(reuse) {
              #ifdef SO_REUSEADDR
              setsockopt(sv_sd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val));
              #endif

              #ifdef SO_REUSEPORT
              setsockopt(sv_sd, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val));
              #endif
      }

     int cl_sd;
     struct sockaddr_in cl_addr;
     int cl_addr_len = sizeof(cl_addr);
     cl_sd = accept(sv_sd, (struct sockaddr*)&cl_addr, &cl_addr_len);
     return cl_sd;
}


// ESEMPIO D'USO: Sul server 192.168.1.1...
#define BUF_LEN      128

int len;
char recv_buf[BUF_LEN];
char send_buf[BUF_LEN];

int sd = server(12345, 10, 0, 0);
if(sd < 0) return -1;
//...

len = recv(sd, recv_buf, BUF_LEN, 0);
if(len < 0) return -1;
//...

len = send(sd, send_buf, BUF_LEN, 0);
if(len < 0) return -1;
//...



// ESEMPIO D'USO: Sul client...
#define BUF_LEN      128

int len;
char recv_buf [BUF_LEN];
char send_buf [BUF_LEN];

int sd = client("192.168.1.1", 12345);
if(sd < 0) return -1;
//...

len = send(sd, send_buf, BUF_LEN, 0);
if(len < 0) return -1;
//...

len = recv(sd, recv_buf, BUF_LEN, 0);
if(len < 0) return -1;
//...
Non sapendo di preciso cosa volevi ho copiato tutto prendi solo quello che ti serve Il codice non mi pare di averlo testato, ma concettualmente dovrebbe essere OK.
Ikon O'Cluster è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Hyundai IONIQ 3: l'abbiamo guidata per l...
Ricarica wireless dinamica fino a 150 kW...
Troppi report invalidi generati dall'IA:...
Furto di identità su scala nazion...
HPE vende i primi sistemi AMD Helios per...
Suno AI nel mirino dell'Antitrust: conte...
Xiaomi avrebbe cancellato il suo prossim...
WINDTRE BUSINESS rinnova l’offerta mobil...
BMW inaugura la fabbrica di batterie da ...
Googlebook apre al modding: bootloader s...
Denuvo non molla, vuole scoprire chi &eg...
Il miglior portatile tuttofare a basso p...
Gli agenti di OpenAI hanno mandato in ti...
Follie Amazon Prime: Zenbook è un...
MicroSD SanDisk in offerta Prime Day: Ul...
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: 01:51.


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