char -> short

2fast4you87

Erfahrenes Mitglied
Hallo ,
Ich habe ein kleines Socket Problem unter VC++ 6.
Und zwar bekomm ich von einem server einen string wo die Nummern 22305 als string enhalten ist.
Diese möchte ich dann in Short umwalden um mit ihnen einen server zu starten.

Code:
 // Connect auf server bekomme eine antwort
	rc = recv(s,q_port,sizeof(q_port),0);
	q_port[rc]='\0';

	short prt = q_port; // <-- umwandlung ...

// client beenden
// Server starten
	
	memset(&addr,0,sizeof(SOCKADDR_IN)); 
	addr.sin_family=AF_INET;
	addr.sin_port=htons(prt);  << hier soll der umgwandelte string hinein. (short)
	addr.sin_addr.s_addr=INADDR_ANY;

Der Compiler hat mir folgenden Fehler gegeben :

Code:
rror C2440: 'initializing' : 'char [5]' kann nicht in 'short' konvertiert werden
        Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

Darauf hin habe ich folgendes ausprobiert ...

Code:
short prt = reinterpret_cast<long>(q_port); << funktioniert auch nicht!
Könnt Ihr mir da weiterhelfen?

Gruß 2fast...
 
Damit du verstehst, warum das nicht so geht. Du kannst nicht einfach eine Struktur oder ein Array mit einem automatischen Type Cast in eine der Basisdatenstrukturen (char, int, etc) umwandeln. Das geht nur zwischen den Basisdatentypen.
 
ich wollte nicht extra nen eigenes Thema dafür erstellen, aber ich habe mir gerade die winsock.h angeguckt und dabei ist mir was aufgefallen :
Code:
struct ip_mreq {
        struct in_addr  imr_multiaddr;  /* IP multicast address of group */
        struct in_addr  imr_interface;  /* local IP address of interface */
};
kann ich mit der imr_interface var die source ip adresse im tcp/ip header verändern ?
Denn unter C gibt es da ne eigene strucur für, tcphdr oder so ...
Habt ihr da ne Ahnung von ?


gruß 2fast...
 
Zurück