if(!SocketCreate(&clientConfig,clientResult))TraceLog(LOG_WARNING,"Failed to open client: status %d, errno %d",clientResult->status,clientResult->socket->status);
else
{
if(!(clientConfig.type==SOCKET_UDP))
{
if(!SocketConnect(&clientConfig,clientResult))TraceLog(LOG_WARNING,"Failed to connect to server: status %d, errno %d",clientResult->status,clientResult->socket->status);
}
elapsed=0.0f;
}
}
intmain()
{
// Setup
intscreenWidth=800;
intscreenHeight=450;
InitWindow(
screenWidth,screenHeight,"raylib [network] example - tcp client");
SetTargetFPS(60);
SetTraceLogLevel(LOG_DEBUG);
// Networking
InitNetwork();
// Create the client
//
// Performs
// getaddrinfo
// socket
// setsockopt
// connect (TCP only)
client_res=AllocSocketResult();
if(!SocketCreate(&client_cfg,client_res)){
TraceLog(LOG_WARNING,"Failed to open client: status %d, errno %d",
client_res->status,client_res->socket->status);
}else{
if(!(client_cfg.type==SOCKET_UDP)){
if(!SocketConnect(&client_cfg,client_res)){
TraceLog(LOG_WARNING,
"Failed to connect to server: status %d, errno %d",
client_res->status,client_res->socket->status);
}
}
}
// Create and add sockets to the socket set
socketSet=AllocSocketSet(1);
AddSocket(socketSet,clientResult->socket);
// Create & Add sockets to the socket set
socket_set=AllocSocketSet(1);
msglen=strlen(pingmsg)+1;
memset(recvBuffer,'\0',sizeof(recvBuffer));
AddSocket(socket_set,client_res->socket);
SetTargetFPS(60);// Set our game to run at 60 frames-per-second
TraceLog(LOG_WARNING,"Failed to open server: status %d, errno %d",serverResult->status,serverResult->socket->status);
}
else
{
if(!SocketBind(&serverConfig,serverResult))
{
TraceLog(LOG_WARNING,"Failed to bind server: status %d, errno %d",serverResult->status,serverResult->socket->status);
}
else
{
if(!(serverConfig.type==SOCKET_UDP))
{
if(!SocketListen(&serverConfig,serverResult))TraceLog(LOG_WARNING,"Failed to start listen server: status %d, errno %d",serverResult->status,serverResult->socket->status);
}
}
}
}
// Once connected to the network, check the sockets for pending information
// and when information is ready, send either a Ping or a Pong.
voidNetworkUpdate()
{
// CheckSockets
//
// If any of the sockets in the socket_set are pending (received data, or requests)
// then mark the socket as being ready. You can check this with IsSocketReady(client_res->socket)
intactive=CheckSockets(socket_set,0);
if(active!=0){
TraceLog(LOG_DEBUG,
"There are currently %d socket(s) with data to be processed.",active);
}
// Create and add sockets to the socket set
socketSet=AllocSocketSet(2);
AddSocket(socketSet,serverResult->socket);
// IsSocketReady
//
// If the socket is ready, attempt to receive data from the socket
// If we received data, was that data a "Ping!" or a "Pong!"
if(bytesRecv>0){
if(strcmp(recvBuffer,pingmsg)==0){pong=true;}
if(strcmp(recvBuffer,pongmsg)==0){ping=true;}
}
// After each delay has expired, send a response "Ping!" for a "Pong!" and vice versa
elapsed+=GetFrameTime();
if(elapsed>delay){
if(ping){
ping=false;
SocketSend(server_res->socket,pingmsg,msglen);
}elseif(pong){
pong=false;
SocketSend(server_res->socket,pongmsg,msglen);
}
elapsed=0.0f;
}
}
intmain(void)
{
// Initialization
@ -83,30 +23,37 @@ int main(void)
InitWindow(screenWidth,screenHeight,"raylib [network] example - udp server");
InitNetworkDevice();
// Create the server
//
// Performs
// getaddrinfo
// socket
// setsockopt
// bind
// listen
server_res=AllocSocketResult();
if(!SocketCreate(&server_cfg,server_res))
{
TraceLog(LOG_WARNING,"Failed to open server: status %d, errno %d",server_res->status,server_res->socket->status);
}else
{
if(!SocketBind(&server_cfg,server_res))TraceLog(LOG_WARNING,"Failed to bind server: status %d, errno %d",server_res->status,server_res->socket->status);
if(!SocketCreate(&serverConfig,serverResult))TraceLog(LOG_WARNING,"Failed to open server: status %d, errno %d",serverResult->status,serverResult->socket->status);
elseif(!SocketBind(&serverConfig,serverResult))TraceLog(LOG_WARNING,"Failed to bind server: status %d, errno %d",serverResult->status,serverResult->socket->status);
// Create and add sockets to the socket set
socketSet=AllocSocketSet(1);
AddSocket(socketSet,serverResult->socket);
SetTargetFPS(60);// Set our game to run at 60 frames-per-second