new to networking and need al little help

Started by
0 comments, last by TehDonutGuy 17 years, 7 months ago
i have a sever exe and en client exe. the client sends a message and the server will give a cout if the message is received. just cant get it working. the client code

int _tmain(int argc, _TCHAR* argv[])
{
WSADATA w;    // used to store information about WinSock version
int error = WSAStartup (0x0202, &w);   // Fill in w
if (error)
{ // there was an error
	printf("oioio");
}
if (w.wVersion != 0x0202)
{ // wrong WinSock version!
  WSACleanup (); // unload ws2_32.dll
  }

	SOCKET s;			// Socket handle
	s = socket (AF_INET,SOCK_STREAM,0);
	sockaddr_in target; 

	target.sin_family = AF_INET; // address family Internet 
	target.sin_port = htons (5555); // set server’s port number 
	target.sin_addr.s_addr = inet_addr ("127.0.0.1"); // set server’s IP 
bool connection=false;

while(connection!=true){

	if (connect(s,(LPSOCKADDR)&target,sizeof(target))==SOCKET_ERROR){
	printf("error bij het connecten");
	WSACleanup();
		
		return 0;
		}else{
	printf ("connection gemaakt\n");
	connection=true;
	}
		
}//eind van while
printf("begin met verzenden\n");
char buffer[10];  // buffer that is 11 characters big
char piet='a';
int jan=2;
sprintf(buffer,"%c%d",TEST_A,0);

send (s, buffer, 2, 0);
if(buffer[0]==TEST_A){
	std::cout << "test a is wel degelijk verzonden";
}
printf("informatie is verzonden\n");

	return 0;
}


and here the server code

int _tmain(int argc, _TCHAR* argv[])
{
WSADATA w;    // used to store information about WinSock version
int error = WSAStartup (0x0202, &w);   // Fill in w
if (error)
{ // there was an error
	printf("oioio");
}
if (w.wVersion != 0x0202)
{ // wrong WinSock version!
  WSACleanup (); // unload ws2_32.dll
  }//testen of alles werkt



bool connected=false;
int addr_size = sizeof (sockaddr);
sockaddr_in dezeS;// de struckt met alle socked data die nodig is(server)
sockaddr client1;// de struckt met alle socked data die nodig is(client)
SOCKET gast;// de client socket

SOCKET s = socket (AF_INET, SOCK_STREAM, 0); //maak de socket aan
	//hieronder alle info die de socket nodig heeft in een struckt plaatsen
	dezeS.sin_family = AF_INET;    
	dezeS.sin_port = htons (5555); // poort nummer (htons is een functie die het in het goede formaat maakt)
	dezeS.sin_addr.s_addr = htonl (INADDR_ANY);
	if (bind(s,(LPSOCKADDR)&dezeS,sizeof(dezeS))==SOCKET_ERROR)// geeft de informatie hierboven geplaats aan het nieuwe socket
	{
		printf("FOUT!!");
		WSACleanup ();    }
	if (listen(s,1)==SOCKET_ERROR) //start met accepteren van connetion+error tjek
	{
		printf( "Error:  Unable to listen!\n");
		WSACleanup ();
		}
	SDL_Delay(3000);
printf("wacht op verbinding\n");





while(connected==false){

	gast = accept(s,&client1,&addr_size);
						if (gast==INVALID_SOCKET)//werderom error tjeking
		{
			printf( "Error:  Unable to accept connection!\n");
			WSACleanup ();
			
		}else {

  
				SDL_Delay(1000);
			printf("wacht op verbinding\n");
			SDL_Delay(3000);
			printf("wacht op verbinding\n");
			connected=true;
			
						}				
}

char buffer[80]; 
recv (gast,buffer,2,0);

if((buffer[0]==TEST_A)){

	std::cout << "HOERAAAA HET WERKT";
}else {

	std::cout << "het werkt nog steeds niet post je code op gamedev";
}
		



		




return 0;
}

so...
Advertisement
TEST_A looks like a candidate, you sure thats the same in both client and server? I can't really see anything else that would stop your connection "working."

Start by adding some error checking to send and recv, make sure they are sending/receiving the right sizes, and not returning -1 on error, or ZERO (disconnected).
Instead of testing the first byte in the received packet on the server, just output the buffer (as hex perhaps), see what it gives.

And just for your knowledge, char buffer[10] is 10 characters big. I'm guessing you picked that up from VB? There's no need on 10 or 80 character buffers if all you're sending is 2 bytes.



This topic is closed to new replies.

Advertisement