diff --git a/NET/lhs_net_socket.pbi b/NET/lhs_net_socket.pbi index 40cf7fa..b1d82a1 100644 --- a/NET/lhs_net_socket.pbi +++ b/NET/lhs_net_socket.pbi @@ -56,6 +56,8 @@ DeclareModule lsocket ; socket.h #PF_INET = 2 #AF_INET = #PF_INET + #SOL_SOCKET = $ffff + #SO_ERROR = $1007 Global LoggerUUID.s = "" Global Log_Level_Info = 0 @@ -67,27 +69,35 @@ DeclareModule lsocket Declare ReadSocket(ClientSocket.i, *Buffer, Length.i) ;Return Effective Read Declare WriteSocket(ClientSocket.i, *Buffer, Length.i) ;Return Effective Writen Declare CloseSocket(Socket.i) + Declare IsClientSocket(ClientSocket.i) Declare.s GetSocketIP(Socket.i) EndDeclareModule Module lsocket Global NewMap lsockets_server.sockaddr_in() Global NewMap lsockets_client.sockaddr_in() - + + Procedure IsClientSocket(ClientSocket.i) + Protected error.q = 0 + Protected retval + retval = getsockopt_(ClientSocket, #SOL_SOCKET, #SO_ERROR, error, 8); + ProcedureReturn retval + EndProcedure + Procedure CreateSocket(Port.i, Queuelengt.i = 64, Type.i = #SOCK_STREAM, Protocol.i = #AF_INET, BindedIP.s = "127.0.0.1") ; Return Server Socket < 0 Error Protected SocketID.i SocketID = socket_(Protocol, Type, 0) If SocketID = -1 : ProcedureReturn -1 : EndIf lsockets_server(Str(SocketID))\sin_family = Protocol - lsockets_server(Str(SocketID))\sin_addr\s_addr = Inet_addr_(BindedIP) + lsockets_server(Str(SocketID))\sin_addr\s_addr = inet_addr_(BindedIP) lsockets_server(Str(SocketID))\sin_port = htons_(Port) If bind_(SocketID, @lsockets_server(Str(SocketID)), SizeOf(sockaddr_in)) <> 0 - Close_(SocketID) + close_(SocketID) DeleteMapElement(lsockets_server(), Str(SocketID)) ProcedureReturn -2 Else If listen_(SocketID, Queuelengt) <> 0 - Close_(SocketID) + close_(SocketID) DeleteMapElement(lsockets_server(), Str(SocketID)) ProcedureReturn -3 EndIf @@ -98,9 +108,9 @@ Module lsocket Procedure.s GetSocketIP(Socket.i) Protected IPAddresse.s If lsockets_client(Str(Socket))\sin_family = 0 - IPAddresse = PeekS(Inet_ntoa_(lsockets_client(Str(Socket))\sin_addr\s_addr), -1, #PB_Ascii) + IPAddresse = PeekS(inet_ntoa_(lsockets_client(Str(Socket))\sin_addr\s_addr), -1, #PB_Ascii) Else - IPAddresse = PeekS(Inet_ntoa_(lsockets_client(Str(Socket))\sin_addr\s_addr), -1, #PB_Ascii) + IPAddresse = PeekS(inet_ntoa_(lsockets_client(Str(Socket))\sin_addr\s_addr), -1, #PB_Ascii) EndIf ldl::Logging("Requested IP Information:" + IPAddresse, LoggerUUID, Log_Level_Info) ProcedureReturn IPAddresse @@ -115,7 +125,7 @@ Module lsocket If ClientSID < 0 : FreeMemory(memory) : ProcedureReturn ClientSID : EndIf MapID = Str(ClientSID) CopyMemory(memory, lsockets_client(MapID), ClientLength) - ldl::Logging("Connected IP:" + PeekS(Inet_ntoa_(lsockets_client(MapID)\sin_addr\s_addr), -1, #PB_Ascii), LoggerUUID, Log_Level_Info) + ldl::Logging("Connected IP:" + PeekS(inet_ntoa_(lsockets_client(MapID)\sin_addr\s_addr), -1, #PB_Ascii), LoggerUUID, Log_Level_Info) FreeMemory(memory) ProcedureReturn ClientSID EndProcedure @@ -138,4 +148,4 @@ Module lsocket ProcedureReturn Feedback EndProcedure -EndModule +EndModule \ No newline at end of file