Fixed network socket ID errors

This commit is contained in:
n00b
2024-12-15 13:58:51 -05:00
parent 119e6f5bfe
commit b01f3cfc01
13 changed files with 86 additions and 22 deletions

View File

@@ -1,4 +1,4 @@
#title TCP_AcceptSocket [RCBasic Doc] #title TCP_AcceptSocket [RCBasic Doc]
#header function TCP_AcceptSocket(server, client) #header function TCP_AcceptSocket(server)
Attempts to accept a connection from a server socket. If successful it will open a client socket to communicate with the server and return true. If it fails it will return false. Attempts to accept a connection from a server socket. If successful it will return a client socket id. If it fails it will return -1.

View File

@@ -337,7 +337,7 @@ rc_net_tcp_remoteHost( TCP_REMOTEHOST_SOCKET )
rc_net_tcp_remotePort( TCP_REMOTEPORT_SOCKET ) rc_net_tcp_remotePort( TCP_REMOTEPORT_SOCKET )
rc_net_tcp_getData_str( TCP_GETDATA_SOCKET, TCP_GETDATA_NUMBYTES, &TCP_GETDATA_SDATA$ ) rc_net_tcp_getData_str( TCP_GETDATA_SOCKET, TCP_GETDATA_NUMBYTES, &TCP_GETDATA_SDATA$ )
rc_net_tcp_sendData( TCP_SENDDATA_SOCKET, TCP_SENDDATA_SDATA$ ) rc_net_tcp_sendData( TCP_SENDDATA_SOCKET, TCP_SENDDATA_SDATA$ )
rc_net_tcp_acceptSocket( TCP_ACCEPTSOCKET_SERVER, TCP_ACCEPTSOCKET_CLIENT ) rc_net_tcp_acceptSocket( TCP_ACCEPTSOCKET_SERVER )
rc_net_udp_openSocket( UDP_OPENSOCKET_PORT ) rc_net_udp_openSocket( UDP_OPENSOCKET_PORT )
rc_net_udp_closeSocket( UDP_CLOSESOCKET_SOCKET ) rc_net_udp_closeSocket( UDP_CLOSESOCKET_SOCKET )
rc_net_udp_readStream( UDP_GETDATA_SOCKET, &UDP_GETDATA_HOST$, &UDP_GETDATA_PORT, &UDP_GETDATA_SDATA$ ) rc_net_udp_readStream( UDP_GETDATA_SOCKET, &UDP_GETDATA_HOST$, &UDP_GETDATA_PORT, &UDP_GETDATA_SDATA$ )

View File

@@ -7,7 +7,7 @@ function TCP_RemoteHost(socket)
function TCP_RemotePort(socket) function TCP_RemotePort(socket)
function TCP_GetData(socket, numBytes, ByRef sData$) function TCP_GetData(socket, numBytes, ByRef sData$)
sub TCP_SendData(socket, sData$) sub TCP_SendData(socket, sData$)
function TCP_AcceptSocket(server, client) function TCP_AcceptSocket(server)
function UDP_OpenSocket(port) function UDP_OpenSocket(port)
sub UDP_CloseSocket(socket) sub UDP_CloseSocket(socket)
function UDP_GetData(socket, byref host$, byref port, byref sData$) function UDP_GetData(socket, byref host$, byref port, byref sData$)

View File

@@ -949,7 +949,6 @@ void init_embedded_functions()
add_embedded_arg("sData$", ID_TYPE_STR); add_embedded_arg("sData$", ID_TYPE_STR);
embed_function("TCP_AcceptSocket", ID_TYPE_FN_NUM); embed_function("TCP_AcceptSocket", ID_TYPE_FN_NUM);
add_embedded_arg("server", ID_TYPE_NUM); add_embedded_arg("server", ID_TYPE_NUM);
add_embedded_arg("client", ID_TYPE_NUM);
embed_function("UDP_OpenSocket", ID_TYPE_FN_NUM); embed_function("UDP_OpenSocket", ID_TYPE_FN_NUM);
add_embedded_arg("port", ID_TYPE_NUM); add_embedded_arg("port", ID_TYPE_NUM);
embed_function("UDP_CloseSocket", ID_TYPE_SUB); embed_function("UDP_CloseSocket", ID_TYPE_SUB);

View File

@@ -619,7 +619,6 @@ BS main.TCP_GetData sData$ 0
N main.TCP_SendData socket 0 N main.TCP_SendData socket 0
S main.TCP_SendData sData$ 0 S main.TCP_SendData sData$ 0
N main.TCP_AcceptSocket server 0 N main.TCP_AcceptSocket server 0
N main.TCP_AcceptSocket client 1
N main.UDP_OpenSocket port 0 N main.UDP_OpenSocket port 0
N main.UDP_CloseSocket socket 0 N main.UDP_CloseSocket socket 0
N main.UDP_GetData socket 0 N main.UDP_GetData socket 0

Binary file not shown.

View File

@@ -943,7 +943,6 @@ add_embedded_arg("socket", ID_TYPE_NUM);
add_embedded_arg("sData$", ID_TYPE_STR); add_embedded_arg("sData$", ID_TYPE_STR);
embed_function("TCP_AcceptSocket", ID_TYPE_FN_NUM); embed_function("TCP_AcceptSocket", ID_TYPE_FN_NUM);
add_embedded_arg("server", ID_TYPE_NUM); add_embedded_arg("server", ID_TYPE_NUM);
add_embedded_arg("client", ID_TYPE_NUM);
embed_function("UDP_OpenSocket", ID_TYPE_FN_NUM); embed_function("UDP_OpenSocket", ID_TYPE_FN_NUM);
add_embedded_arg("port", ID_TYPE_NUM); add_embedded_arg("port", ID_TYPE_NUM);
embed_function("UDP_CloseSocket", ID_TYPE_SUB); embed_function("UDP_CloseSocket", ID_TYPE_SUB);

View File

@@ -943,7 +943,6 @@
#define TCP_SENDDATA_SDATA$ str_var[0].sref[0].value[ str_var[0].byref_offset ] #define TCP_SENDDATA_SDATA$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
#define FN_TCP_AcceptSocket 339 #define FN_TCP_AcceptSocket 339
#define TCP_ACCEPTSOCKET_SERVER num_var[0].nref[0].value[ num_var[0].byref_offset ] #define TCP_ACCEPTSOCKET_SERVER num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TCP_ACCEPTSOCKET_CLIENT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define FN_UDP_OpenSocket 340 #define FN_UDP_OpenSocket 340
#define UDP_OPENSOCKET_PORT num_var[0].nref[0].value[ num_var[0].byref_offset ] #define UDP_OPENSOCKET_PORT num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define FN_UDP_CloseSocket 341 #define FN_UDP_CloseSocket 341

View File

@@ -1043,7 +1043,7 @@ case FN_TCP_SendData: //Sub Procedure
rc_net_tcp_sendData( TCP_SENDDATA_SOCKET, TCP_SENDDATA_SDATA$ ); rc_net_tcp_sendData( TCP_SENDDATA_SOCKET, TCP_SENDDATA_SDATA$ );
break; break;
case FN_TCP_AcceptSocket: //Number Function case FN_TCP_AcceptSocket: //Number Function
rc_push_num(rc_net_tcp_acceptSocket( TCP_ACCEPTSOCKET_SERVER, TCP_ACCEPTSOCKET_CLIENT )); rc_push_num(rc_net_tcp_acceptSocket( TCP_ACCEPTSOCKET_SERVER ));
break; break;
case FN_UDP_OpenSocket: //Number Function case FN_UDP_OpenSocket: //Number Function
rc_push_num(rc_net_udp_openSocket( UDP_OPENSOCKET_PORT )); rc_push_num(rc_net_udp_openSocket( UDP_OPENSOCKET_PORT ));

View File

@@ -946,7 +946,6 @@
#define TCP_SENDDATA_SDATA$ str_var[0].sref[0].value[ str_var[0].byref_offset ] #define TCP_SENDDATA_SDATA$ str_var[0].sref[0].value[ str_var[0].byref_offset ]
#define FN_TCP_AcceptSocket 339 #define FN_TCP_AcceptSocket 339
#define TCP_ACCEPTSOCKET_SERVER num_var[0].nref[0].value[ num_var[0].byref_offset ] #define TCP_ACCEPTSOCKET_SERVER num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define TCP_ACCEPTSOCKET_CLIENT num_var[1].nref[0].value[ num_var[1].byref_offset ]
#define FN_UDP_OpenSocket 340 #define FN_UDP_OpenSocket 340
#define UDP_OPENSOCKET_PORT num_var[0].nref[0].value[ num_var[0].byref_offset ] #define UDP_OPENSOCKET_PORT num_var[0].nref[0].value[ num_var[0].byref_offset ]
#define FN_UDP_CloseSocket 341 #define FN_UDP_CloseSocket 341

View File

@@ -1043,7 +1043,7 @@ case FN_TCP_SendData: //Sub Procedure
rc_net_tcp_sendData( TCP_SENDDATA_SOCKET, TCP_SENDDATA_SDATA$ ); rc_net_tcp_sendData( TCP_SENDDATA_SOCKET, TCP_SENDDATA_SDATA$ );
break; break;
case FN_TCP_AcceptSocket: //Number Function case FN_TCP_AcceptSocket: //Number Function
rc_push_num(rc_net_tcp_acceptSocket( TCP_ACCEPTSOCKET_SERVER, TCP_ACCEPTSOCKET_CLIENT )); rc_push_num(rc_net_tcp_acceptSocket( TCP_ACCEPTSOCKET_SERVER ));
break; break;
case FN_UDP_OpenSocket: //Number Function case FN_UDP_OpenSocket: //Number Function
rc_push_num(rc_net_udp_openSocket( UDP_OPENSOCKET_PORT )); rc_push_num(rc_net_udp_openSocket( UDP_OPENSOCKET_PORT ));

View File

@@ -124,6 +124,7 @@ int rc_net_tcp_openSocket(std::string host, Uint16 port)
if(id < 0) if(id < 0)
{ {
rc_tcp_socket_obj obj; rc_tcp_socket_obj obj;
id = rc_tcp_socket.size();
rc_tcp_socket.push_back(obj); rc_tcp_socket.push_back(obj);
} }
@@ -142,6 +143,8 @@ int rc_net_tcp_openSocket(std::string host, Uint16 port)
if(!rc_tcp_socket[id].socket) if(!rc_tcp_socket[id].socket)
return -1; return -1;
rc_tcp_socket[id].active = true;
//cout << "Add socket to socket_set" << endl; //cout << "Add socket to socket_set" << endl;
SDLNet_TCP_AddSocket(rc_socket_set, rc_tcp_socket[id].socket); SDLNet_TCP_AddSocket(rc_socket_set, rc_tcp_socket[id].socket);
return id; return id;
@@ -149,6 +152,9 @@ int rc_net_tcp_openSocket(std::string host, Uint16 port)
void rc_net_tcp_closeSocket(int _socket) void rc_net_tcp_closeSocket(int _socket)
{ {
if(_socket < 0 || _socket >= rc_tcp_socket.size())
return;
if(rc_tcp_socket[_socket].socket == NULL) if(rc_tcp_socket[_socket].socket == NULL)
{ {
rc_tcp_socket[_socket].active = false; rc_tcp_socket[_socket].active = false;
@@ -160,16 +166,28 @@ void rc_net_tcp_closeSocket(int _socket)
rc_tcp_socket[_socket].active = false; rc_tcp_socket[_socket].active = false;
} }
Uint32 rc_net_tcp_remoteHost(int _socket) double rc_net_tcp_remoteHost(int _socket)
{ {
if(_socket < 0 || _socket >= rc_tcp_socket.size())
return -1;
if(rc_tcp_socket[_socket].socket == NULL)
return -1;
IPaddress * ip = SDLNet_TCP_GetPeerAddress(rc_tcp_socket[_socket].socket); IPaddress * ip = SDLNet_TCP_GetPeerAddress(rc_tcp_socket[_socket].socket);
return ip->host; return (double)ip->host;
} }
Uint32 rc_net_tcp_remotePort(int _socket) double rc_net_tcp_remotePort(int _socket)
{ {
if(_socket < 0 || _socket >= rc_tcp_socket.size())
return -1;
if(rc_tcp_socket[_socket].socket == NULL)
return -1;
IPaddress * ip = SDLNet_TCP_GetPeerAddress(rc_tcp_socket[_socket].socket); IPaddress * ip = SDLNet_TCP_GetPeerAddress(rc_tcp_socket[_socket].socket);
return ip->port; return (double)ip->port;
} }
int rc_net_checkSockets(Uint32 m) int rc_net_checkSockets(Uint32 m)
@@ -179,6 +197,12 @@ int rc_net_checkSockets(Uint32 m)
int rc_net_tcp_socketReady(int _socket) int rc_net_tcp_socketReady(int _socket)
{ {
if(_socket < 0 || _socket >= rc_tcp_socket.size())
return 0;
if(rc_tcp_socket[_socket].socket == NULL)
return 0;
return SDLNet_SocketReady(rc_tcp_socket[_socket].socket); return SDLNet_SocketReady(rc_tcp_socket[_socket].socket);
} }
@@ -214,19 +238,43 @@ void rc_net_tcp_sendData(int socket, std::string data)
SDLNet_TCP_Send(rc_tcp_socket[socket].socket, data.c_str(), data.length()); SDLNet_TCP_Send(rc_tcp_socket[socket].socket, data.c_str(), data.length());
} }
bool rc_net_tcp_acceptSocket(int socket_server, int socket_client) int rc_net_tcp_acceptSocket(int socket_server)
{ {
int socket_client = -1;
for(int i = 0; i < rc_tcp_socket.size(); i++)
{
if(!rc_tcp_socket[i].active)
{
socket_client = i;
break;
}
}
if(socket_client < 0)
{
rc_tcp_socket_obj obj;
socket_client = rc_tcp_socket.size();
rc_tcp_socket.push_back(obj);
}
//cout << "\n\nthis is a test\n\n"; //cout << "\n\nthis is a test\n\n";
if(rc_tcp_socket[socket_server].socket == NULL) if(rc_tcp_socket[socket_server].socket == NULL)
{ {
//cout << "no server" << endl; //cout << "no server" << endl;
return false; return -1;
} }
bool val = (rc_tcp_socket[socket_client].socket = SDLNet_TCP_Accept(rc_tcp_socket[socket_server].socket)); bool val = (rc_tcp_socket[socket_client].socket = SDLNet_TCP_Accept(rc_tcp_socket[socket_server].socket));
if(val) if(val)
SDLNet_TCP_AddSocket(rc_socket_set, rc_tcp_socket[socket_client].socket); SDLNet_TCP_AddSocket(rc_socket_set, rc_tcp_socket[socket_client].socket);
else
{
rc_tcp_socket[socket_client].socket = NULL;
rc_tcp_socket[socket_client].active = false;
return -1;
}
//cout << "cp1\n"; //cout << "cp1\n";
return val; return socket_client;
} }
bool rc_net_udp_openSocket(Uint16 port) bool rc_net_udp_openSocket(Uint16 port)
@@ -342,19 +390,40 @@ Uint32 rc_net_udp_maxlen()
std::string rc_net_udp_getRemoteHost(int socket) std::string rc_net_udp_getRemoteHost(int socket)
{ {
if(socket < 0 || socket >= rc_udp_socket.size())
return "";
if(!rc_udp_socket[socket].active)
return "";
IPaddress * ip = SDLNet_UDP_GetPeerAddress(rc_udp_socket[socket].socket,0); IPaddress * ip = SDLNet_UDP_GetPeerAddress(rc_udp_socket[socket].socket,0);
// //
return SDLNet_ResolveIP(ip); return SDLNet_ResolveIP(ip);
} }
Uint32 rc_net_udp_getRemotePort(int socket) double rc_net_udp_getRemotePort(int socket)
{ {
if(socket < 0 || socket >= rc_udp_socket.size())
return -1;
if(!rc_udp_socket[socket].active)
return -1;
IPaddress * ip = SDLNet_UDP_GetPeerAddress(rc_udp_socket[socket].socket,0); IPaddress * ip = SDLNet_UDP_GetPeerAddress(rc_udp_socket[socket].socket,0);
return ip->port; return (double)ip->port;
} }
void rc_net_udp_closeSocket(int socket) void rc_net_udp_closeSocket(int socket)
{ {
if(socket < 0 || socket >= rc_udp_socket.size())
return;
if(!rc_udp_socket[socket].active)
{
rc_udp_socket[socket].socket = NULL;
return;
}
SDLNet_UDP_DelSocket(rc_socket_set, rc_udp_socket[socket].socket); SDLNet_UDP_DelSocket(rc_socket_set, rc_udp_socket[socket].socket);
SDLNet_UDP_Close(rc_udp_socket[socket].socket); SDLNet_UDP_Close(rc_udp_socket[socket].socket);
rc_udp_socket[socket].socket = NULL; rc_udp_socket[socket].socket = NULL;

View File

@@ -2243,7 +2243,7 @@
<SDL2/SDL.h> <SDL2/SDL.h>
<SDL2/SDL_mixer.h> <SDL2/SDL_mixer.h>
1727545973 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_net.h 1734288894 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_net.h
"rc_os_defines.h" "rc_os_defines.h"
<android/log.h> <android/log.h>
"SDL.h" "SDL.h"
@@ -2539,7 +2539,7 @@
1731249956 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_camera.h 1731249956 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_camera.h
1733959687 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h 1734285254 /home/n00b/Projects/RCBASIC4/rcbasic_runtime/rc_windowclose.h
1608686973 /usr/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h 1608686973 /usr/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h
"BulletCollision/CollisionShapes/btTriangleCallback.h" "BulletCollision/CollisionShapes/btTriangleCallback.h"