#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<<<font color="darkred">"Connected"</font><<endl;
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ReciveFunction,0,0,&threadid);
do{
cin.getline(message,100,'\n');
cout<<endl;
SendFunction();
}<font color="blue">while</font>(1==1);
<font color="blue">int</font> a;
cin>>a;
}
<font color="gray">///Socket.h
</font>
#include<winsock2.h>
<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<<<font color="darkred">"Call: "</font><<call<<<font color="darkred">" returned an error"</font><<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<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
|