Easy to use TCP/UDP library for each programming language
[NetworkComm.]UdpCast
CSocketAddress address("127.0.0.1", 10010)
UdpSocket socket = [NetworkComm.]UdpCast(address)

if (socket.Available) {
    socket.setReceivedCallback(CSocketReceivedCallback)

    CSocketDataArgs args()
    args.Add(CInteger(-256))
    args.Add(CBoolean(true))
    args.Add(CString("Hello"))
    args.Add(CFloat(-1.1))
    args.Add(CByteArray([0x41, 0x42, 0x43]))

    CSocketSendData data(0x88, args)
    if (data.BuildResult == CSocketSendDataBuildResult.Successful) {
        socket.Send(data, address)
    }
}
[NetworkComm.]TcpListen
CSocketAddress address("127.0.0.1", 10010)
TcpServer server = [NetworkComm.]TcpListen(address)

if (server.Running) {
    server.setAcceptCallback(TcpServerAcceptCallback)
}
[NetworkComm.]TcpConnect
CSocketAddress address("127.0.0.1", 10010)
TcpSocket socket = [NetworkComm.]TcpConnect(address)

if (socket.Available) {
    socket.setReceivedCallback(CSocketReceivedCallback)

    CSocketDataArgs args()
    args.Add(CInteger(-256))
    args.Add(CBoolean(true))
    args.Add(CString("Hello"))
    args.Add(CFloat(-1.1))
    args.Add(CByteArray([0x41, 0x42, 0x43]))

    CSocketSendData data(0x88, args)
    if (data.BuildResult == CSocketSendDataBuildResult.Successful) {
        if (socket.Connected) {
            socket.Send(data)
        }
    }
}
TcpServerAcceptCallback
TcpServerAcceptCallback(TcpSocket socket) {
    if (socket.Available) {
        socket.setReceivedCallback(CSocketReceivedCallback)
    }
}
CSocketReceivedCallback
CSocketReceivedCallback(CSocket socket, CSocketReceivedData data) {
    if (data.Result == CSocketReceivedDataResult.Completed) {
        if (data.Command == 0x88) {
            CInteger arg1 = data.Args[0]
            CBoolean arg2 = data.Args[1]
            CString arg3 = data.Args[2]
            CFloat arg4 = data.Args[3]
            CByteArray arg5 = data.Args.At(4)    
        }
    } else if (data.Result == CSocketReceivedDataResult.Interrupted) {
    } else if (data.Result == CSocketReceivedDataResult.ParsingError) {
    } else if (data.Result == CSocketReceivedDataResult.Closed) {
    }
}