Documentación de Steamworks
Interfaz ISteamNetworking
Funciones de red para conexiones y para enviar datos entre clientes a través de NAT (Traducción de direcciones de red), siempre que sea posible.

ADVERTENCIA: Esta API está obsoleta y es posible que se elimine de la próxima versión del SDK de Steamworks. Por favor usa ISteamNetworkingSockets o ISteamNetworkingMessages en su lugar. Consulta Conectividad de red de Steam para obtener más información.

Funciones miembro

Las funciones miembro para ISteamNetworking se llaman a través de la función de acceso global SteamNetworking().

AcceptP2PSessionWithUser

bool AcceptP2PSessionWithUser( CSteamID steamIDRemote );
NombreTipoDescripción
steamIDRemoteCSteamIDId. de Steam del usuario que nos envió el paquete inicial.

Permite al juego especificar si acepta un paquete entrante. Esta función ha de llamarse antes de que se establezca una conexión real con un usuario remoto; el juego podrá decidir si permite o no al usuario remoto comunicarse con él.

Cuando un usuario remoto al que no se ha enviado un paquete recientemente intente enviar primero un paquete, el juego recibirá la función callback P2PSessionRequest_t. Esta función contiene el id. de Steam del usuario que quiere enviar el paquete. Como respuesta a esta función callback verificarás si es alguien con quien te quieres comunicar (por ejemplo si estáis en la misma sala) y entonces, aceptarás la conexión; O si no quieres comunicarte y simplemente la ignorarás. Si el usuario continúa enviándote paquetes, seguirás recibiendo P2PSessionRequest_t. Llamar a SendP2PPacket para comunicarse con el otro usuario, acepta implícitamente la solicitud de sesión.

¡Ten en cuenta que llamar a esta función solo debe realizarse como respuesta a la función callback P2PSessionRequest_t!

Devuelve: bool
true si tiene éxito false solo si steamIDRemote no es válido.

AllowP2PPacketRelay

bool AllowP2PPacketRelay( bool bAllow );
NombreTipoDescripción
bAllowbool

Permite o impide que las conexiones P2P se retransmitan por medio de los servidores de Steam cuando no pueda realizarse una conexión directa o a través de NAT.

Esto solo se aplica a las conexiones creadas después de establecer este valor y a las conexiones existentes que deban reconectarse automáticamente después de establecer este valor.

De forma predeterminada, se permite la retransmisión de paquetes P2P.

Devuelve: bool
Siempre devuelve true.

CloseP2PChannelWithUser

bool CloseP2PChannelWithUser( CSteamID steamIDRemote, int nChannel );
NombreTipoDescripción
steamIDRemoteCSteamIDId. de Steam del usuario con el que se va a cerrar la conexión.
nChannelintEl canal a cerrar.

Cierra el canal P2P especificado al terminar de hablar con un usuario por ese canal.

Una vez que se hayan cerrado todos los canales para un usuario, se cerrará la sesión abierta para el usuario y los nuevos datos de este usuario provocarán un nuevo callback P2PSessionRequest_t.

Devuelve: bool
true si el canal se cerró correctamente; de lo contrario, false si no había ninguna sesión o canal activo con el usuario.

CloseP2PSessionWithUser

bool CloseP2PSessionWithUser( CSteamID steamIDRemote );
NombreTipoDescripción
steamIDRemoteCSteamIDId. de Steam del usuario con el que se va a cerrar la conexión.

Se debe llamar al terminar la comunicación con el usuario ya que liberará todos los recursos internos que se asignaron para la conexión.

Si el usuario remoto intenta enviarte datos nuevamente, se mandará otra vez la función callback P2PSessionRequest_t.

Devuelve: bool
true si la sesión fue cerrada exitosamente; de lo contrario, false si no se abrió ninguna conexión con steamIDRemote.

CreateConnectionSocket

SNetSocket_t CreateConnectionSocket( uint32 nIP, uint16 nPort, int nTimeoutSec );
NombreTipoDescripción
nIPuint32
nPortuint16
nTimeoutSecint

Crea un socket e inicia la conexión con un destino remoto.

Es parte de un conjunto de funciones más antiguas diseñado conforme al modelo de sockets TCP de Berkeley. Es preferible que se usen las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

Devuelve: SNetSocket_t

CreateListenSocket

SNetListenSocket_t CreateListenSocket( int nVirtualP2PPort, uint32 nIP, uint16 nPort, bool bAllowUseOfPacketRelay );
NombreTipoDescripción
nVirtualP2PPortint
nIPuint32
nPortuint16
bAllowUseOfPacketRelaybool

Crea un socket y escucha por si otros se conectan.

Activará una función callback SocketStatusCallback_t cuando se conecte otro cliente.

nVirtualP2PPort es el id. único al que se conectará el cliente, en caso de que tengas varios puertos.
Por lo general, esto solo puede ser 0 a menos que quieras múltiples conjuntos de conexiones.
unIP es la dirección IP local a la que se va a unir.
Pasa a 0 si quieres simplemente la IP local predeterminada.
unPort es el puerto que se va a utilizar.
Pasa a 0 si no quieres que los usuarios puedan conectarse a través de IP/Puerto, sino que esperas que siempre sean conexiones P2P.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

Devuelve: SNetListenSocket_t

CreateP2PConnectionSocket

SNetSocket_t CreateP2PConnectionSocket( CSteamID steamIDTarget, int nVirtualPort, int nTimeoutSec, bool bAllowUseOfPacketRelay );
NombreTipoDescripción
steamIDTargetCSteamID
nVirtualPortint
nTimeoutSecint
bAllowUseOfPacketRelaybool

Crea un socket e inicia la conexión con un destino remoto.

se puede conectar a través de una identificación de Steam (cliente o servidor de juegos) conocida, o directamente a una IP
en caso de éxito se activará una función callback SocketStatusCallback_t
si falla o se agota el tiempo de espera, se activará una función callback SocketStatusCallback_t con un código de falla en m_eSNetSocketState

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, pues son más sólidas y las funciones más antiguas acabarán por eliminarse.

Devuelve: SNetSocket_t

DestroyListenSocket

bool DestroyListenSocket( SNetListenSocket_t hSocket, bool bNotifyRemoteEnd );
NombreTipoDescripción
hSocketSNetListenSocket_t
bNotifyRemoteEndbool

Al destruir un conector de escucha, todos los sockets normales que haya generado se eliminan automáticamente.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

Devuelve: bool

DestroySocket

bool DestroySocket( SNetSocket_t hSocket, bool bNotifyRemoteEnd );
NombreTipoDescripción
hSocketSNetSocket_t
bNotifyRemoteEndbool

Desconecta la conexión al socket, si existe, e invalida el identificador o handle.

cualquier dato no leído en el socket será desechado
si se establece bNotifyRemoteEnd, el socket no se destruirá completamente hasta que el extremo remoto reconozca la desconexión.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, pues son más sólidas y las funciones más antiguas acabarán por eliminarse.

Devuelve: bool

GetListenSocketInfo

bool GetListenSocketInfo( SNetListenSocket_t hListenSocket, uint32 *pnIP, uint16 *pnPort );
NombreTipoDescripción
hListenSocketSNetListenSocket_t
pnIPuint32 *
pnPortuint16 *

Devuelve el puerto local al que está enlazado el socket de escucha.

*pnIP y *pnPort serán 0 si el socket se ha configurado para escuchar solamente conexiones P2P.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

Devuelve: bool

GetMaxPacketSize

int GetMaxPacketSize( SNetSocket_t hSocket );
NombreTipoDescripción
hSocketSNetSocket_t

Obtiene el tamaño máximo de paquete en bytes.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, pues son más sólidas y las funciones más antiguas acabarán por eliminarse.

Devuelve: int

GetP2PSessionState

bool GetP2PSessionState( CSteamID steamIDRemote, P2PSessionState_t *pConnectionState );
NombreTipoDescripción
steamIDRemoteCSteamIDEl usuario cuya información de estado de sesión activa se desea obtener.
pConnectionStateP2PSessionState_t *Devuelve el estado.

Rellena una estructura P2PSessionState_t con detalles sobre la conexión, como si hay o no una conexión activa; número de bytes en cola en la conexión; el último código de error, si lo hubiera; si se está utilizando o no un servidor de retransmisión; y la IP y el puerto del usuario remoto, si se conocen.

Esto solo debería necesitarse para fines de depuración.

Devuelve: bool
true si pConnectionState se completó; de lo contrario, false si no hubo una sesión abierta con el usuario especificado.

Por ejemplo:
P2PSessionState_t p2pSessionState; SteamNetworking()->GetP2PSessionState( steamIDremote, &p2pSessionState );

GetSocketConnectionType

ESNetSocketConnectionType GetSocketConnectionType( SNetSocket_t hSocket );
NombreTipoDescripción
hSocketSNetSocket_t

Devuelve true para describir cómo se conectó finalmente el socket.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

Devuelve: ESNetSocketConnectionType

GetSocketInfo

bool GetSocketInfo( SNetSocket_t hSocket, CSteamID *pSteamIDRemote, int *peSocketStatus, uint32 *punIPRemote, uint16 *punPortRemote );
NombreTipoDescripción
hSocketSNetSocket_t
pSteamIDRemoteCSteamID *
peSocketStatusint *
punIPRemoteuint32 *
punPortRemoteuint16 *

Devuelve información sobre el socket especificado y rellena el contenido de los punteros.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, pues son más sólidas y las funciones más antiguas acabarán por eliminarse.

Devuelve: bool

IsDataAvailable

bool IsDataAvailable( SNetListenSocket_t hListenSocket, uint32 *pcubMsgSize, SNetSocket_t *phSocket );
NombreTipoDescripción
hListenSocketSNetListenSocket_t
pcubMsgSizeuint32 *
phSocketSNetSocket_t *

Comprueba los datos de cualquier socket que se haya conectado a través de este socket de escucha.

Devuelve false si no hay datos restantes
llena *pcubMsgSize con el tamaño del siguiente mensaje, en bytes
llena *phSocket con el socket en donde los datos están disponibles.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

Devuelve: bool

IsDataAvailableOnSocket

bool IsDataAvailableOnSocket( SNetSocket_t hSocket, uint32 *pcubMsgSize );
NombreTipoDescripción
hSocketSNetSocket_t
pcubMsgSizeuint32 *

Devuelve false si no queda ningún dato.

Rellena *pcubMsgSize con el tamaño del siguiente mensaje en bytes.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, pues son más sólidas y las funciones más antiguas acabarán por eliminarse.

Devuelve: bool

IsP2PPacketAvailable

bool IsP2PPacketAvailable( uint32 *pcubMsgSize, int nChannel = 0 );
NombreTipoDescripción
pcubMsgSizeuint32 *Devuelve el tamaño del paquete.
nChannelintCanal en el que se comprobará si hay algún paquete disponible.

Comprueba si hay un paquete P2P disponible para leer y obtiene el tamaño del mensaje, si lo hay.

Se debe llamar en un bucle por cada canal que se esté usando. Si hay un paquete disponible, debe llamar a ReadP2PPacket para obtener los datos del paquete.

Devuelve: bool
true si hay un paquete disponible; de lo contrario, false.

ReadP2PPacket

bool ReadP2PPacket( void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, CSteamID *psteamIDRemote, int nChannel = 0 );
NombreTipoDescripción
pubDestvoid *Devuelve los datos del paquete al copiarlos en este búfer.
cubDestuint32El tamaño asignado para pubDest. Debe ser igual al tamaño que devuelve IsP2PPacketAvailable o al tamaño del paquete más grande.
pcubMsgSizeuint32 *Devuelve el tamaño del paquete.
psteamIDRemoteCSteamID *Devuelve el id. de Steam del usuario que envió este paquete.
nChannelintCanal por el que se envió el paquete.

Lee un paquete que ha sido enviado por otro usuario a través de SendP2PPacket.


Si el búfer cubDest es demasiado pequeño para el paquete, el mensaje se truncará.

Esta llamada no produce bloqueo y devuelve false si no hay ningún dato disponible.

Antes de llamar a esto, deberías haber llamado a IsP2PPacketAvailable.

Devuelve: bool
true si un paquete fue leído con éxito; de lo contrario, false si no hay ningún paquete disponible.

Por ejemplo:
uint32 msgSize = 0; while ( SteamNetworking()->IsP2PPacketAvailable( &msgSize ) ) { void *packet = malloc( msgSize ); CSteamID steamIDRemote; uint32 bytesRead = 0; if ( SteamNetworking()->ReadP2PPacket( packet, msgSize, &bytesRead, &steamIDRemote ) ) { // el código de envío del mensaje va aquí } free( packet ); }

RetrieveData

bool RetrieveData( SNetListenSocket_t hListenSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize, SNetSocket_t *phSocket );
NombreTipoDescripción
hListenSocketSNetListenSocket_t
pubDestvoid *
cubDestuint32
pcubMsgSizeuint32 *
phSocketSNetSocket_t *

Recupera datos de cualquier conector que se haya conectado a través de este socket de escucha.

Rellena pubDest con el contenido del mensaje
los mensajes siempre están completos, del mismo tamaño que se enviaron (es decir, empaquetados, no transmitidos)
Si *pcubMsgSize < cubDest, solo se escriben datos parciales
devuelve false si no hay datos disponibles
llena *phSocket con el socket en donde los datos están disponibles.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

Devuelve: bool

RetrieveDataFromSocket

bool RetrieveDataFromSocket( SNetSocket_t hSocket, void *pubDest, uint32 cubDest, uint32 *pcubMsgSize );
NombreTipoDescripción
hSocketSNetSocket_t
pubDestvoid *
cubDestuint32
pcubMsgSizeuint32 *

Completa pubDest con el contenido del mensaje.

los mensajes siempre están completos, del mismo tamaño que se enviaron (es decir, empaquetados, no transmitidos)
Si *pcubMsgSize < cubDest, solo se escriben datos parciales
devuelve false si no hay datos disponibles

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets Berkeley TCP. Es preferible que se usen las funciones P2P, pues son más sólidas y las funciones más antiguas acabarán por eliminarse.

Devuelve: bool

SendDataOnSocket

bool SendDataOnSocket( SNetSocket_t hSocket, void *pubData, uint32 cubData, bool bReliable );
NombreTipoDescripción
hSocketSNetSocket_t
pubDatavoid *
cubDatauint32
bReliablebool

enviando datos
debe ser un identificador para un socket conectado
todos los datos se envían a través de UDP y, por lo tanto, los tamaños de envío están limitados a 1200 bytes; después de esto, muchos routers comenzarán a perder paquetes
usa la bandera confiable con precaución; aunque la tasa de reenvío es bastante agresiva,
todavía puede causar bloqueos en la recepción de datos (como TCP).

Devuelve: bool

SendP2PPacket

bool SendP2PPacket( CSteamID steamIDRemote, const void *pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel = 0 );
NombreTipoDescripción
steamIDRemoteCSteamIDEl usuario al que se envía el paquete.
pubDataconst void *El vector de bytes sin procesar para el paquete de datos a enviar. El tamaño máximo de este paquete se define mediante eP2PSendType.
cubDatauint32El tamaño en bytes de pubData.
eP2PSendTypeEP2PSendEspecifica cómo se desea que se transmitan los datos, es decir, de forma fiable, de forma no fiable, mediante búfer, etc.
nChannelintEl canal que actúa como un puerto virtual para enviar este paquete y te permite ayudar a enrutar mensajes a diferentes sistemas.
Tendrás que llamar a ReadP2PPacket en el otro extremo con el mismo número de canal para recuperar los datos en el otro extremo. El uso de diferentes canales para hablar con el mismo usuario seguirá utilizando la misma conexión P2P subyacente, ahorrando en recursos.
Usa 0 para el canal principal, o si no usa esta función.

Envía un paquete P2P al usuario especificado.

Esta es una API sin estado que establece automáticamente conexiones a través de redes NAT o del servidor de retransmisión de Steam.

NOTA: El primer paquete enviado podría retrasarse mientras se ejecuta el código de cruce de redes NAT.

Consulta EP2PSend para las descripciones de las diferentes formas de envío de paquetes.

El tipo de datos que envías es arbitrario; puedes usar sistemas comercializados como Búfers de protocolo o Cap'n Proto para codificar los paquetes de forma eficiente, o puedes crear tu propio sistema de mensajería.

Devuelve: bool
Activa una función callback P2PSessionRequest_t.
true si el paquete se envió con éxito.
Ten en cuenta que esto no significa que se haya recibido correctamente, si no podemos comunicarnos con el usuario después de un tiempo de espera de 20 segundos, entonces se publicará un error a través de la función callback P2PSessionConnectFail_t.

false bajo las siguientes condiciones:
  • El paquete es demasiado grande para el tipo de envío.
  • Id. de Steam de destino no es válido.
  • Hay demasiados bytes en la cola de envío.

Devoluciones de llamada

Estas son funciones callback que pueden activarse llamando a SteamAPI_RunCallbacks. Muchas de estas se activarán directamente en respuesta a las funciones miembro de ISteamNetworking.

P2PSessionConnectFail_t

Se llama cuando los paquetes no pueden comunicarse con el usuario especificado.
Todos los paquetes en cola que no se hayan enviado en este momento se eliminarán, los intentos adicionales de enviar volverán a intentar la conexión (pero se eliminarán si volvemos a fallar).

NombreTipoDescripción
m_steamIDRemoteCSteamIDEl usuario a quien intentábamos enviar los paquetes.
m_eP2PSessionErroruint8Indica la razón de los problemas que están apareciendo. En realidad, un EP2PSessionError.

P2PSessionRequest_t

Un usuario desea comunicarse con nosotros por el canal P2P a través de SendP2PPacket. En respuesta, debes realizar una llamada a AcceptP2PSessionWithUser si deseas abrir el canal de red con ellos.

NombreTipoDescripción
m_steamIDRemoteCSteamIDEl usuario que desea iniciar una sesión P2P con nosotros.

Funciones asociadas: SendP2PPacket

SocketStatusCallback_t

Llamado cuando el estado de un socket ha cambiado, se usa como parte de las llamadas CreateListenSocket y CreateP2PConnectionSocket.

Es parte de un conjunto de funciones más antiguo diseñado conforme al modelo de sockets TCP de Berkeley. Es preferible que uses las funciones P2P, ya que son más sólidas y las funciones más antiguas acabarán eliminándose.

NombreTipoDescripción
m_hSocketSNetSocket_tEl conector empleado para enviar datos al host remoto o para recibirlos de este host.
m_hListenSocketSNetListenSocket_tEste es el socket del servidor que se estaba escuchando; NULL si se trataba de una conexión saliente.
m_steamIDRemoteCSteamIDEl id. de Steam remoto al que se ha conectado, si lo tuviese.
m_eSNetSocketStateintEstado del socket, ESNetSocketState

Structs

Estas son las estructuras que pueden devolver las funciones de ISteamNetworking y con las que pueden interactuar.

P2PSessionState_t

Estado de conexión con un usuario específico, devuelto por GetP2PSessionState. Esta es la información, al nivel estructural más básico, de lo que está sucediendo con una llamada previa a SendP2PPacket. No suele ser necesaria, excepto en caso de depuración.

NombreTipoDescripción
m_bConnectionActiveuint8¿Tenemos una conexión abierta activa con el usuario ( true) o no ( false)?
m_bConnectinguint8¿Actualmente estamos intentando establecer una conexión con el usuario (true) o no (false)?
m_eP2PSessionErroruint8Último error registrado en el socket. Esto devuelve un EP2PSessionError.
m_bUsingRelayuint8¿Esta conexión está pasando por un servidor de retransmisión Steam (true) o no (false)?
m_nBytesQueuedForSendint32El número de bytes en cola para enviárselo al usuario.
m_nPacketsQueuedForSendint32El número de paquetes en cola para enviárselo al usuario.
m_nRemoteIPuint32La IP del host remoto, si estuviese establecida. Podría ser un servidor de retransmisión de Steam. Solo existe con fines de compatibilidad con las API de autenticación más antiguas.
m_nRemotePortuint16El puerto del host remoto, si estuviese establecido. Podría ser un servidor de retransmisión de Steam. Solo existe con fines de compatibilidad con las API de autenticación más antiguas.

Enums

Estas son las enumeraciones definidas para usarse con ISteamNetworking.

EP2PSend

Especifica el tipo de envío de SendP2PPacket.
Por lo general, k_EP2PSendUnreliable es lo que deseas para paquetes tipo UDP, k_EP2PSendReliable para paquetes tipo TCP.

NombreValorDescripción
k_EP2PSendUnreliable0Envío UDP básico. Los paquetes no pueden superar los 1 200 bytes (el tamaño MTU normal). Se puede perder o llegar fuera de servicio (raro).
La API remitente posee cierto conocimiento de la conexión subyacente; por tanto, si no se logra cruzar la red NAT o si hay un ajuste reconocido que afecta a la conexión, el paquete se asignará a un lote hasta que la conexión se vuelva a abrir.
k_EP2PSendUnreliableNoDelay1Igual que la anterior, pero si la conexión P2P subyacente no está establecida aún, el paquete simplemente se descartará. El uso de esto en el primer paquete enviado a un host remoto casi garantiza que el paquete se eliminará.
Esto solo es realmente útil para tipos de datos que nunca deberían almacenarse en búfer, es decir, paquetes de carga útil de voz.
k_EP2PSendReliable2Mensaje fiable de envío. Puede enviar hasta 1 MB de datos en un solo mensaje.
Hace fragmentación/reensamblado de mensajes bajo el "capó", así como una ventana deslizante para envíos eficientes de grandes fragmentos de datos.
k_EP2PSendReliableWithBuffering3Como se indicó anteriormente, pero aplica el algoritmo de Nagle al envío: los envíos se acumularán hasta que el tamaño de MTU actual (generalmente ~1200 bytes, pero puede cambiar) o que haya pasado ~200 ms (algoritmo de Nagle).
Esto es útil si deseas enviar un conjunto de mensajes más pequeños pero hacer que se unan en un solo paquete.
Dado que todo el flujo confiable está ordenado, puedes hacer varios envíos de mensajes pequeños con k_EP2PSendReliableWithBuffering y luego hacer un k_EP2PSendReliable normal para forzar que se envíen todos los datos almacenados.

EP2PSessionError

Lista de posibles errores devueltos por SendP2PPacket, estos se enviarán en la función callback P2PSessionConnectFail_t.

NombreValorDescripción
k_EP2PSessionErrorNone0No hubo error.
k_EP2PSessionErrorNotRunningApp1El usuario objetivo no está ejecutando el mismo juego.
k_EP2PSessionErrorNoRightsToApp2El usuario local no posee la aplicación que se está ejecutando.
k_EP2PSessionErrorDestinationNotLoggedIn3El usuario objetivo no está conectado a Steam.
k_EP2PSessionErrorTimeout4La conexión expiró debido a que el usuario de destino no respondió, quizás no estén llamando a AcceptP2PSessionWithUser.
Los firewalls corporativos también pueden bloquear esto (NAT transversal no es cortafuegos firewall), asegúrate de que los puertos UDP 3478, 4379 y 4380 estén abiertos en una dirección de salida.
k_EP2PSessionErrorMax5Sin uso.

ESNetSocketConnectionType

Describe cómo está conectado actualmente el socket. Usado solo por la API para redes antiguas.

NombreValorDescripción
k_ESNetSocketConnectionTypeNotConnected0
k_ESNetSocketConnectionTypeUDP1
k_ESNetSocketConnectionTypeUDPRelay2

ESNetSocketState

Indicadores de progreso de la conexión, utilizados por CreateP2PConnectionSocket.

NombreValorDescripción
k_ESNetSocketStateInvalid0
k_ESNetSocketStateConnected1La comunicación es válida.
k_ESNetSocketStateInitiated10Estados mientras se establece una conexión.
La máquina de estado de conexión ha comenzado.
k_ESNetSocketStateLocalCandidatesFound11conexiones P2P
Hemos encontrado nuestra información local de IP.
k_ESNetSocketStateReceivedRemoteCandidates12Hemos recibido información de la máquina remota acerca de su información IP a través del backend de Steam.
k_ESNetSocketStateChallengeHandshake15Conexiones directas.
Hemos recibido un paquete de desafío del servidor.
k_ESNetSocketStateDisconnecting21Estados de fallo
La API lo cerró, y estamos en el proceso de decirle al otro lado.
k_ESNetSocketStateLocalDisconnect22La API cerró la conexión y se ha completado el cierre.
k_ESNetSocketStateTimeoutDuringConnect23Se ha agotado el tiempo de espera mientras se intentaba llevar a cabo la conexión.
k_ESNetSocketStateRemoteEndDisconnected24El extremo remoto se ha desconectado.
k_ESNetSocketStateConnectionBroken25Se ha interrumpido la conexión, el otro extremo ha desaparecido o nuestra conexión local de red se ha interrumpido.

Typedefs

Estas son las definiciones de tipo establecidas para usarse con ISteamNetworking.

NombreTipo de baseDescripción
SNetListenSocket_tuint32CreateListenSocket()
SNetSocket_tuint32Handle a un socket
CreateP2PConnectionSocket()

Constantes

Estas son las constantes definidas para usarse con ISteamNetworking.

NombreTipoValorDescripción
STEAMNETWORKING_INTERFACE_VERSIONconst char *"SteamNetworking005"