📄 rvsocket.h
字号:
/*****************************************************************************
Filename : rvsocket.h
Description: Socket interface declaration.
******************************************************************************
Copyright (c) 1999 RADVision Inc.
******************************************************************************
NOTICE:
This document contains information that is proprietary to RADVision Inc.
No part of this publication may be reproduced in any form whatsoever
without written prior approval by RADVision Inc.
RADVision Inc. reserves the right to revise this publication and make
changes without obligation to notify any person of such revisions or
changes.
******************************************************************************
$Revision:$
$Date:$
$Author: S. Cipolli$
*****************************************************************************/
#ifndef RV_SOCKET_H
#define RV_SOCKET_H
#include <stddef.h>
#include "rvtypes.h"
#include "rvinet.h"
#include "rvhost.h"
#include "rvsocketaddr.h"
#if defined(RV_SOCKETS_WSOCK)
typedef SOCKET RvSocket;
#else
typedef int RvSocket;
#endif
#if defined(__cplusplus)
extern "C" {
#endif
/* Generic */
#define rvSocketConstructCopy(d, s, a) rvDefaultConstructCopy((d), (s), (a))
void rvSocketDestruct(RvSocket* s);
#define rvSocketGetAllocator(x) rvDefaultGetAllocator(x)
#define rvSocketEqual(a, b) rvDefaultEqual((a), (b))
RvBool rvSocketBind(RvSocket* s, const RvSocketAddr* localAddr);
RvBool rvSocketBindAnyPort(RvSocket* s, RvSocketAddr* localAddr);
RvSocketAddr* rvSocketGetLocalAddr(RvSocket* s, OUT RvSocketAddr* addr);
RvInetPort rvSocketGetPort(RvSocket* s);
/* Socket option methods */
RvBool rvSocketSetTypeOfService(RvSocket* s, RvUint8 tos);
RvBool rvSocketGetTypeOfService(RvSocket* s, RvUint8* tos);
RvBool rvSocketSetRecvBufferSize(RvSocket* s, int size);
RvBool rvSocketGetRecvBufferSize(RvSocket* s, int* size);
RvBool rvSocketSetSendBufferSize(RvSocket* s, int size);
RvBool rvSocketGetSendBufferSize(RvSocket* s, int* size);
/* Multicast socket options */
RvBool rvSocketSetMulticastLoop(RvSocket* s, RvBool loop);
RvBool rvSocketGetMulticastLoop(RvSocket* s, RvBool* loop);
RvBool rvSocketSetMulticastHops(RvSocket* s, int hops);
RvBool rvSocketGetMulticastHops(RvSocket* s, int* hops);
RvBool rvSocketJoinMulticastGroup(RvSocket* s, RvUint32 mcastip, RvUint32 ipaddr);
RvBool rvSocketLeaveMulticastGroup(RvSocket* s, RvUint32 mcastip, RvUint32 ipaddr);
RvBool rvSocketSetMulticastInterface(RvSocket* s, RvUint32 ipaddr);
/* UDP */
#define RV_UDP_MAXLENGTH 65000
RvSocket* rvSocketConstructUdp(RvSocket* s, RvInetPort port);
RvSocket* rvSocketConstructUdpAnyPort(RvSocket* s);
RvSocket* rvSocketConstructUdpEx(RvSocket* s, const RvSocketAddr *addressPtr);
int rvSocketRecvFrom(RvSocket* s, void* pkt, int len,
OUT RvSocketAddr* fromAddr);
RvBool rvSocketSendTo(RvSocket* s, const void* pkt, int len,
const RvSocketAddr* toAddr);
RvBool rvSocketSendToInet(RvSocket* s, const void* pkt, int len,
RvHost* h, size_t n, RvInetPort port);
RvBool rvSocketSendToInetEx(RvSocket* s, const void* pkt, int len,
const char* dnsOrIp, RvInetPort port);
/* TCP */
RvSocket* rvSocketConstructTcpActive(RvSocket* s, RvInetPort port, RvSocketAddr* addr);
RvSocket* rvSocketConstructTcpPassive(RvSocket* s, RvInetPort port);
RvBool rvSocketGetRemoteAddr(RvSocket* s, OUT RvSocketAddr* addr);
RvBool rvSocketAccept(RvSocket* s, OUT RvSocket* socket);
int rvSocketRecv(RvSocket* s, void* pkt, int len);
RvBool rvSocketSend(RvSocket* s, void* pkt, int len);
/* Aliases to solve naming problem */
#define RvSocketConstructCopy(d, s, a) rvSocketConstructCopy((d), (s), (a))
#define RvSocketDestruct(x) rvSocketDestruct(x)
#define RvSocketGetAllocator(x) rvSocketGetAllocator(x)
#define RvSocketEqual(a, b) rvSocketEqual((a), (b))
#if defined(__cplusplus)
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -