03. maj 2001 - 10:38
Der er
3 kommentarer og
1 løsning
Client/Server over socket
////// CLIENT SIDEN ///////////////
T client; // template variable
write(sockfd,client,100); //sender client til server
read(sockfd,&client,100); //læser og
recv(sockfd,&client,100,0); //reciever den nye client
cout<<client;
////////SERVER SIDEN//////////////
T clientstreng;
read(client_sockfd,&clientstreng,100);
/* udfører et eller andet og giver
clientstreng en ny værdi */
write (client_sockfd,&clientstreng,100);
send (client_sockfd,&clientstreng,100,0);
//////////////////////////////////////////
når programmet kører går det ned \'segmentation fault\' men hvis jeg fjerner
cout linien vil det gerne køre.
cout << er overloadet i den template klasse som T står for så det burde virke.....Men det gør det ikke, hvorfor f..... ikke???
Jeg kører i Linux.
stringbuffer>>
ved ikke hvorfor, for jeg har også en read og recv i client, men det har jeg rettet.\'
Men jeg har selv fundet ud af hva der var galt ved hjælp af udelukkelses metoden.
min template T indeholder et objekt hvor der er indvolveret to \'string\' og en \'int\'. så det er et objekt med disse tre typer der skal igennem socket\'en.
men man kan ikke fører en string type igennem måske fordi de systemkald der bruges er skrevet i C. jeg prøvede at sende de tre typer igennem hver for sig og det var kun \'int\'en der kom igennem. efter jeg ændrede de tre typer til char[] så kom de alla igennem, når jeg gjorde hver for sig. template T ville stadig ikke føres igennem, som et objekt.Og måske er det fordi det er et objekt af en klasse, og da C jo ikke har klasser er det måske problemet. Men så har jeg tænkt på at ligge de to char[] og int\'en ind i en struct, måske går det bedre, det er da noget C\'s systemkald kender......pyyha... måske skulle jeg prøve en nemmere \'spaghetti metode\' ..