🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Why doesn't this code work?

Started by
-1 comments, last by laeuchli 22 years, 6 months ago
  
#include <iostream.h> 

#include "Socket.h" 

#include <windows.h> 

CIOSocket ClientSocket;
bool testreturn;
bool newstuff=true;
char ip[]="192.168.1.7";
#define MAXCLIENTS 100
DWORD threadid;
struct postion{
char postionofship[100];
};
postion info[MAXCLIENTS];
char message[100];
long WINAPI  ReciveFunction(void *vArg)
{
	do{

char messagel[100];
ClientSocket.Receive(messagel,100,NULL,false);
cout<<"Recived Message: ";
cout<<messagel<<endl<<endl;
cout<<"Enter Message"<<endl;
//strcpy(info.postionofship,messagel);
</font>

	}<font color="blue">while</font>(1==1);
<font color="blue">return</font> 1;
}
	

<font color="blue">void</font> SendFunction()
{	



	testreturn=ClientSocket.Send((void*)message,100,NULL);
	errortest(testreturn);
	


}

<font color="blue">void</font> main()
{
	

	testreturn=ClientSocket.Create();
	errortest(testreturn);
	testreturn=ClientSocket.Connect(ip,632);
	errortest(testreturn);
	cout&lt;&lt;<font color="darkred">"Connected"</font>&lt;&lt;endl;
	CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ReciveFunction,0,0,&threadid);
	do{
	
	
	cin.getline(message,100,'\n');
	cout&lt;&lt;endl;
	SendFunction();
	}<font color="blue">while</font>(1==1);
	<font color="blue">int</font> a;
	cin&gt;&gt;a;
}
<font color="gray">///Socket.h
</font>
#include&lt;winsock2.h&gt;

<font color="blue">int</font> call=0;
<font color="blue">void</font> errortest(<font color="blue">bool</font> testerror)
{
	call++;
	<font color="blue">if</font>(testerror==false)
	{
		cout&lt;&lt;<font color="darkred">"Call: "</font>&lt;&lt;call&lt;&lt;<font color="darkred">" returned an error"</font>&lt;&lt;endl;
	}
}

<font color="blue">class</font> CIOSocket{
private:
	
	<font color="blue">struct</font> sockaddr_in addr; 
	WSADATA WSAData;
	WSAPROTOCOL_INFO pinfo;
	public:
		SOCKET Socket;
		<font color="blue">bool</font>					Accept( CIOSocket& CSocket, <font color="blue">struct</font> sockaddr* addr = NULL, int*addrlen = NULL );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">void</font>					Attach( SOCKET hSocket );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">bool</font>					Bind( <font color="blue">int</font> port = 0, <font color="blue">char</font> * lpszSocketAddress = NULL );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">bool</font>					Create( <font color="blue">int</font> AddressFamily = AF_INET, <font color="blue">int</font> Type = SOCK_STREAM, <font color="blue">int</font> Protocol = IPPROTO_IP );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">bool</font>					Connect( <font color="blue">char</font> * lpszHostAddress, <font color="blue">int</font> nHostPort,<font color="blue">int</font> AddressFamily = AF_INET );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">bool</font>					Close( <font color="blue">void</font> );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		SOCKET				Detach( <font color="blue">void</font> );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		SOCKET				GetSocketHandle( <font color="blue">void</font> );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">bool</font>					Listen( <font color="blue">int</font> nBackLog = 5 );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">bool</font>					Send( const void* lpBuf, <font color="blue">int</font> nBufLen, <font color="blue">int</font> nFlags = NULL );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		<font color="blue">int</font>					Receive( void* lpBuf, <font color="blue">int</font> nBufLen, <font color="blue">int</font> nFlags = NULL, <font color="blue">bool</font> bAcceptPartial = <font color="blue">false</font> );<font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray"><font color="gray">//
</font></font></font></font></font></font></font></font></font></font></font>
		CIOSocket();
		~CIOSocket();
};
SOCKET CIOSocket::Detach(void)
{
	Socket=0;
	<font color="blue">return</font> Socket;
}
<font color="blue">void</font> CIOSocket::Attach(SOCKET hSocket)
{
	Socket=hSocket;
}
SOCKET CIOSocket::GetSocketHandle(void)
{
	<font color="blue">return</font> Socket;
}

CIOSocket::CIOSocket()
{
	WSAStartup( 0x0002, &WSAData );
}
CIOSocket::~CIOSocket()
{
Close();
WSACleanup();
}
<font color="blue">bool</font> CIOSocket::Close()
{
	<font color="blue">if</font>(!closesocket(Socket))
	{
		<font color="blue">return</font> true;
	}
	<font color="blue">else</font>
	{
		<font color="blue">return</font> false;
	}
}
<font color="blue">bool</font> CIOSocket::Accept(CIOSocket &CSocket,sockaddr*addr,<font color="blue">int</font> *addrlen)
{
	<font color="blue">if</font>((CSocket.Socket=accept(Socket,addr,addrlen))!=INVALID_SOCKET)
	{
		<font color="blue">return</font> true;
	}
	<font color="blue">else</font>
	{
		<font color="blue">return</font> false;
	}
}
<font color="blue">bool</font> CIOSocket::Send(const <font color="blue">void</font> *lpBuf,<font color="blue">int</font> nBufLen,<font color="blue">int</font> nFlags)
{
	<font color="blue">if</font>((send(Socket,(const <font color="blue">char</font> *)lpBuf,nBufLen,nFlags))!=SOCKET_ERROR)
	{
		<font color="blue">return</font> true;
	}
	<font color="blue">else</font>
	{
		<font color="blue">return</font> false;
	}
}
<font color="blue">int</font> CIOSocket::Receive(void* lpBuf, <font color="blue">int</font> nBufLen, <font color="blue">int</font> nFlags, <font color="blue">bool</font> bAcceptPartial)
{
	<font color="blue">int</font> amount=0;
	<font color="blue">if</font>(bAcceptPartial==true)
	{
		amount=recv(Socket,(<font color="blue">char</font> *)lpBuf,nBufLen,nFlags);
	}
	<font color="blue">else</font>
	{
		<font color="blue">do</font>
		{
			<font color="blue">int</font> amount2=recv(Socket,(<font color="blue">char</font> *)lpBuf,nBufLen,nFlags);
			<font color="blue">if</font>(amount2==SOCKET_ERROR)
			{
			
			}
			<font color="blue">else</font>
			{
			amount+=amount2;
			}
			}<font color="blue">while</font>(amount&lt;nBufLen);
	}
	<font color="blue">return</font> amount;
}
<font color="blue">bool</font> CIOSocket::Create( <font color="blue">int</font> AddressFamily, <font color="blue">int</font> Type, <font color="blue">int</font> Protocol )
{    
	addr.sin_family=AddressFamily; 
	<font color="gray">//Socket=socket(AddressFamily,Type,Protocol);
</font>
	
	Socket=WSASocket(AddressFamily,Type,Protocol,NULL,0,WSA_FLAG_OVERLAPPED); 
	<font color="blue">if</font>(Socket==INVALID_SOCKET)
	{
		<font color="blue">return</font> false;
	}
	<font color="blue">else</font>
	{
		<font color="blue">return</font> true;
	}
}
<font color="blue">bool</font> CIOSocket::Bind(<font color="blue">int</font> port,<font color="blue">char</font> * lpszSocketAddress)
{
	sockaddr_in bindadd;
	bindadd.sin_family=addr.sin_family;
	<font color="blue">if</font>(lpszSocketAddress==NULL)
	{
		bindadd.sin_addr.s_addr=::htonl( INADDR_ANY );
	}
	<font color="blue">else</font>
	{
		bindadd.sin_addr.s_addr=inet_addr(lpszSocketAddress);         <font color="gray">// change here 
</font>
	}
	bindadd.sin_port=htons(port); 
	<font color="blue">if</font>(!bind(Socket,(<font color="blue">struct</font> sockaddr *)&bindadd,<font color="blue">sizeof</font>(bindadd)))
	{
		<font color="blue">return</font> true;
	}
	<font color="blue">else</font>
	{
		<font color="blue">return</font> false;
	}
}
<font color="blue">bool</font> CIOSocket::Connect(<font color="blue">char</font> *lpszHostAddress,<font color="blue">int</font> nHostPort,<font color="blue">int</font> AddressFamily)
{
	addr.sin_family=AddressFamily; 
	addr.sin_addr.s_addr=inet_addr(lpszHostAddress); 
	addr.sin_port=htons(nHostPort); 
	<font color="blue">if</font>(!connect(Socket,(<font color="blue">struct</font> sockaddr *)&addr,<font color="blue">sizeof</font>(addr)))
	{
		<font color="blue">return</font> true;
	} 
	<font color="blue">else</font>
	{
		<font color="blue">return</font> false;
	}
}
<font color="blue">bool</font> CIOSocket::Listen(<font color="blue">int</font> nBackLog)
{
	<font color="blue">if</font>(!listen(Socket,nBackLog))
	{
		<font color="blue">return</font> true;
	}
	<font color="blue">else</font>
	{
		<font color="blue">return</font> false;
	}
}
  </pre></font></td></tr></table></center><!–ENDSCRIPT–>
Why doesn't this code work!?!? Worked fine when the server was on the same computer as one of the clients, when I moved it over to a different computer, it stoped working!!! It still connects to the server, but nothing ever happens no the clients when you start typing. What should I do?
Jesse

[tags]

Edited by - Magmai Kai Holmlor on January 10, 2002 8:47:28 PM    

This topic is closed to new replies.

Advertisement