Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-07-2007, 20:59   #1
raziel_king
Member
 
L'Avatar di raziel_king
 
Iscritto dal: Jan 2007
Città: Roma
Messaggi: 45
Socket ipv4-ipv6

Buonasera a tutti chiedo lumi su una spinosa questione ...Stiamo lavorando ad un progetto in C per il quale è richiesto che client e server effettuino una connessione tcp indipendente dal protocollo di livello network (ipv4 o ipv6). La soluzione che abbiamo implementato funziona perfettamente con ipv4 ma con ipv6 abbiamo 2 problemi:
1- con l'indirizzo di loopback (::1)otteniamo l'errore 10061 connection refused
2- con qualsiasi altro indirizzo ipv6 otteniamo l'errore 10065 host unreachable

Questo è il codice che abbiamo scritto
CLIENT
Codice:
SOCKET s = INVALID_SOCKET;

	char aport[0x40];
	sprintf(aport, "%d", port);

	struct addrinfo hints, *info;
	memset(&hints, 0, sizeof(struct addrinfo));
	hints.ai_family = AF_UNSPEC;
	hints.ai_socktype = SOCK_STREAM;

	if (getaddrinfo(host, aport, &hints, &info)) {
		PRINT("unknown host: %s\n", host);
		TRACE("1 %d\n", WSAGetLastError());
		sock_exit();
		return -1;
	}

	for (struct addrinfo *ai = info; ai; ai = ai->ai_next) {
		ASSERT(ai->ai_socktype == SOCK_STREAM);

		s = socket(ai->ai_family, SOCK_STREAM, ai->ai_protocol);
		if (s == INVALID_SOCKET) {
			continue;
		}

		if (connect(s, ai->ai_addr, ai->ai_addrlen) == SOCKET_ERROR) {
			VERIFY(!closesocket(s));
			s = INVALID_SOCKET;
			continue;
		}
	}
	freeaddrinfo(info);

	if (s == INVALID_SOCKET) {
		PRINT("unknown host: %s\n", host);
		TRACE("2 %d\n", WSAGetLastError());
		sock_exit();
		return -1;
	}

	printf("connected to %s\n", host);
SERVER
Codice:
SOCKET lstn_create() {
	struct addrinfo hints, *info;
	memset(&hints, 0, sizeof(struct addrinfo));
	hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
	hints.ai_family = AF_UNSPEC;
	hints.ai_socktype = SOCK_STREAM;

	char port[0x40];
	sprintf(port, "%d", tcpport);

	if (getaddrinfo(NULL, port, &hints, &info)) {
		return INVALID_SOCKET;
	}

	SOCKET listener = INVALID_SOCKET;
	for (struct addrinfo *ai = info; ai; ai = ai->ai_next) {
		ASSERT(ai->ai_socktype == SOCK_STREAM);

		listener = socket(ai->ai_family, SOCK_STREAM, ai->ai_protocol);
		if (listener == INVALID_SOCKET) {
			continue;
		}

		if (bind(listener, ai->ai_addr, ai->ai_addrlen)) {
			VERIFY(!closesocket(listener));
			listener = INVALID_SOCKET;
			continue;
		}
	}
	freeaddrinfo(info);

	if (listener == INVALID_SOCKET) {
		TRACE("no suitable network interface\n");
		return INVALID_SOCKET;
	}

	if (listen(listener, SOMAXCONN) == SOCKET_ERROR) {
#ifdef __WIN32
		if (WSAGetLastError() == WSAEADDRINUSE) {
#else // __WIN32
		if (errno == EADDRINUSE) {
#endif // __WIN32
			PRINT("another process is listening on port %d\n", tcpport);
		}

		VERIFY(!closesocket(listener));
		return INVALID_SOCKET;
	}

	return listener;
}
Grazie spero possiate darci una mano
raziel_king è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Eureka J15 Ultra, robot super potente da...
DJI Mini 4 Pro Fly More Combo: niente pa...
Google contraddice se stessa: 'Il web ap...
La nuova PlayStation 6 seguirà il...
Aspirapolvere 21000Pa per auto a 24,99€,...
Scopri i limiti nascosti di Gemini: Goog...
Intel cambia tutto (di nuovo): chi entra...
La sorpresa di IAA Mobility è Xyt...
Le vetture elettriche Opel GSE: Mokka GS...
Star Wars: Knight of the Old Republic Re...
Scoperta un'enorme rete IPTV da pi&ugrav...
Anche Life is Strange diventerà u...
QSAN presenta la nuova serie XN1 di NAS ...
Abbiamo visto in anteprima nuova Renault...
Come ricaricare i veicoli elettrici sino...
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: 07:39.


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