Protocol levels: server/client

Perforce offers a variety of Helix Core application programming interfaces (APIs). Each release of the Helix Core Server or a Helix Core client is associated with a server protocol and a client protocol. As part of their initial communication, the client and server negotiate which protocol levels to use so they can understand each other.

The logs might show a protocol level instead of a release number. See Protocol for server and clients by release.

Example of server protocol level

When launching a 2020.1 Helix Server with RPC tracing set to level 5 (-vrpc=5), the server protocol level of 50 appears as the value of the server2 variable.

p4d -r . -p 1666 -vrpc=5
RpcSendBuffer xfiles = 5
RpcSendBuffer server = 3
RpcSendBuffer server2 = 50
RpcSendBuffer revver = 7
RpcSendBuffer nocase = Perforce Server starting...

Note

The server protocol level is unrelated to the Upgrades counter of the Helix Server Database Schema.

Setting a client protocol level

If you are developing a client application with a Helix Core API, you can set the client protocol level for your application. By default, a Helix Core API uses a protocol level that matches the version of the API libraries. Therefore, it is often not necessary to set the protocol level value explicitly.

On the other hand, you might want to explicitly set a client protocol level to an earlier level if a later client protocol level provides information in a format that earlier client applications are unable to use.

For example, if you are using the Helix Core C/C++ API, you can call ClientAPI::SetProtocol("api","<value>"); and see the example code at ClientApi::SetProtocol( char *, char * ) in the Helix Core C/C++ Developer Guide.

Protocol for server and clients by release

Each Helix Core Server release version is associated with a server protocol and a client protocol.

Note

A client release might use a client protocol associated with an earlier server release. For example, the 2022.2 P4V client uses client protocol 92, which is associated with the 2022.1 server release.

Release Server Protocol Client Protocol
2023.2 57 95
2023.1 56 94
2022.2 55 93
2022.1 54 92
2021.2 53 91
2021.1 52 90
2020.2 51 89
2020.1 50 88
2019.2 49 87
2019.1
patch 2
48 -
2019.1 47 86
2018.2 46 85
2018.1 45 84
2017.2 44 83
2017.1 43 82
2016.2 42 81
2016.1 41 80
2015.2 40 79
2015.1 39 78
2014.2 38 77
2014.1 37 76
2013.3 36 75
2013.2 35 74
2013.1 34 73
2012.2 33 72
2012.1 32 71
2011.1 31 70
2011.1
early
- 69 (action resolves disabled)
2010.2 30 68
2010.1 29 67
Release Server Protocol Client Protocol
2009.2 28 66
2009.1 27 65
2008.2 26 64
2008.1 25 63
2007.3 24 62
2007.2 23 61
2006.2 22 60
2006.1 21 59
2005.2 20 58
2005.1 19 -
2004.2 18 -
2004.1 - 57
2003.2 17 56
2003.1 16 -
2003.1 early 15 -
2002.2 14 55
2002.1 13 54
2001.2 12 52
2001.1 11 51
2000.2 10 -
2000.1 9 -
99.2 8 8
99.1 7 7
99.1 early 6 6
98.2 5 5
98.2 early 4 -
98.1 - 4
97.3 3 3
97.2 2 2
97.1 1 1