Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 29-01-2010, 17:11   #1
ilroci
Junior Member
 
Iscritto dal: Jan 2010
Messaggi: 2
socket tra linux e windows

salve a tutti,
devo realizzare un programma per la condivisione di file nella mia rete di casa (2 pc con un router).

Sul computer A c'è installato ubunutu ed ha come indirizzo locale 192.168.1.102;
sul computer B c'è installato windows XP con indirizzo locale 192.168.1.101.

L'intento è quello di creare un server sul pc B e un client sul pc A.

creo il server utilizzando una windows socket:

Codice:
/*************************************
*  created by Komrade
*  http://unsecure.altervista.org
*************************************/

//Programma che si mette in ascolto e accetta connessioni da una porta scelta a riga di comando
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#define MAX_STRING 256

int main(int argn,char **argv){
	SOCKET miosock,client;
	struct sockaddr_in miosock_addr,client_addr;
	WSADATA data;
	WORD p;
	int len(char *);
	int lun, err=0;
	char mex[]="CONNESSIONE AVVENUTA!\n";
	p=MAKEWORD(2,0);
	err=WSAStartup(p,&data);
	
	if (argn!=2){
		printf("\nUso: %s <porta ascolto>\n",argv[0]);
	    exit(0);
	}	
	
	miosock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	miosock_addr.sin_family=AF_INET;
	miosock_addr.sin_port=htons(atoi(argv[1]));
	miosock_addr.sin_addr.s_addr=INADDR_ANY;
    	err=bind(miosock,(struct sockaddr*)&miosock_addr,sizeof(struct sockaddr_in));
	err=listen(miosock,1);
	lun=sizeof (struct sockaddr);
        printf("attesa di una connessione\n");
	client=accept(miosock,(struct sockaddr*)&client_addr,&lun);
	if (err!=0) printf ("Errore connessione");
	send(client,mex,22,0);
	closesocket (client);
	closesocket(miosock);
	WSACleanup();
	return 0;
}
quando si lancia il server bisogna specificare la porta, io mi connetto sulla 8000

poi creo il client utilizando una linux socket

Codice:
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <netdb.h>
#include <string.h>



int main(){

//creazione della socket
    int clientSocket;
    if((clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0){
        perror("Can't create TCP socket");       
    }
    else{printf("clientSocket creata\n");}

//connessione al server
    int port = 8000;
    sockaddr_in Client_addr;
    Client_addr.sin_family = AF_INET;
    Client_addr.sin_addr.s_addr = inet_addr("192.168.1.101");
    //Client_addr.sin_addr.s_addr = 0;
    Client_addr.sin_port = htons(port);
	printf("in attesa di connessioni\n");
    if(connect(clientSocket, (sockaddr*)&Client_addr, sizeof(struct sockaddr))<0)
        printf("errore durante la connect\n");
    else
        printf("connessione effettuata.\n");


return 0;
}

a questo punto lancio il server su win e rimane in attesa di una connessione,
passo a linux e lancio il client e.... "errore durante la connect", mentre il server rimane immobile...

La cosa strana è che tra linux e linux funziona (ho provato con il pc portatile di un mio amico che ha ubuntu e la connessione si stabilisce).

Come ultima spiaggia ho aperto le porte sul router
TCP 8000 192.168.1.101
TCP 8000 192.168.1.102


Ora la domanda: ma le socket non rendono ininfluente l'host di connessione? mi spiego meglio, la teoria ci dice che le socket stanno sopra i protocolli di comunicazione quindi dal momento che entrambi i programmi vengono sia compilati che eseguiti come può essere che nn funzioni?


grazie per l'attenzione, Giacomo
ilroci è offline  
Old 29-01-2010, 22:39   #2
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
Può benissimo essere che il server che hai scritto per linux funziona e quello che hai riportato sopra no.... intanto, hai provato con il debug dell'applicazione?

Quote:
Originariamente inviato da ilroci Guarda i messaggi
Ora la domanda: ma le socket non rendono ininfluente l'host di connessione? mi spiego meglio, la teoria ci dice che le socket stanno sopra i protocolli di comunicazione quindi dal momento che entrambi i programmi vengono sia compilati che eseguiti come può essere che nn funzioni?
mica capito... cmq le socket lavorano a livello 3 e 4 di OSI.

le socket sono solo un'interfaccia di programmazione per la rete a livello abbastanza basso e su windows ne esistono di due versioni...
mentre la versione uno permette ai nostri programmi di gestire l’input sulla interfaccia di rete e i lavori in background senza doversi preoccupare di gestire la concorrenza attraverso il sistema di messaggi di windows, la seconda versione definisce due interfacce: una “API – application program interface” la quale evita al programmatore il dover implementare la gestione a basso livello, e un’altra “SPI - service provider interface” che gestisce una estensione del winsock stack. SPI può fornire due tipi di servizi, “trasporto” o “spazio dei nomi”. Un esempio di trasporto fornito include i protocolli TCP/IP o IPX/SPX, mentre un esempio di “spazio dei nomi” sarebbe l’interfaccia per il sistema di risoluzione dei nomi DNS.
Teo@Unix è offline  
Old 30-01-2010, 13:11   #3
ilroci
Junior Member
 
Iscritto dal: Jan 2010
Messaggi: 2
ciao,
intanto grazie per la risposta.
Ho notato che i due computer non si pingano a vicenda!!! Quindi mi sa che è quello il problema e non il codice (il codice postato è esattamente quello utilizzato).
Il problema ora è come riuscire a far si che i due pc si vedano...
Quando ho fatto partire il server su win il firewall mi ha chiesto se consentire o bloccare la connessione, e io ho consentito.
Personalmete ho abbandonato win un po di tempo e nn so muovermi bene... qualcuno saprebbe darmi delucidazioni in merito?

grazie
ilroci è offline  
Old 30-01-2010, 13:27   #4
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
cionci è offline  
 Discussione Chiusa


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Il nuovo Qualcomm Snapdragon 8 Gen 5 stu...
Sky e Amazon trasmetteranno la Champions...
'Robot abbastanza forti da fratturare un...
Anche DAZN ha il suo Black Friday: 40 eu...
Carmageddon: Rogue Shift, il prossimo ca...
Redal Alert 2: Command & Conquer si ...
Kingston Technology: memorie e storage c...
Narwal Freo Z10 Ultra: il robot con moci...
In 3 minuti le vedete tutte: sono le mig...
Black Friday da record per Tineco: le sc...
La nuova PS5 con Fortnite manda in tilt ...
Amazon, i tagli hanno colpito soprattutt...
Pazzesco: Panasonic Lumix DC-GH5M2E a 79...
Ecco tutte le offerte Black Friday pi&ug...
DJI Neo a 169€, Flip Combo a 309€ e molt...
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: 05:26.


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