首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

dfsgfdsghsdfhsdfh

前端 614.63KB 41 需要积分: 1
立即下载

资源介绍:

fdgs
Nice: Design documentation ========================== Socket ownership ---------------- For UDP candidates, one socket is created for each component and bound to INADDR_ANY. The same local socket is used for the host candidate, STUN candidate as well as the TURN candidate. The socket handles are stored to the Component structure. The library will use the source address of incoming packets in order to identify from which remote candidates, if any (peer-derived candidates), packets were sent. XXX: Describe the subtle issues with ICMP error handling when one socket is used to send to multiple destinations. Real-time considerations ------------------------ One potential use for libnice code is providing network connectivity for media transport in voice and video telephony applications. This means that the libnice code is potentially run in real-time context (for instance under POSIX SCHED_FIFO/SHCED_RR scheduling policy) and ideally has deterministic execution time. To be real-time friendly, operations with non-deterministic execution time (dynamic memory allocation, file and other resource access) should be done at startup/initialization phase. During an active session (connectivity has been established and non-STUN traffic is being sent), code should be as deterministic as possible. Memory management ----------------- To work on platforms where available memory may be constrained, libnice should gracefully handle out of memory situations. If memory allocation fails, the library should return an error via the originating public library API function. Use of glib creates some challenges to meet the above: - A lot of glib's internal code assumes memory allocations will always work. Use of these glib facilities should be limited. While the glib default policy (see g_malloc() documentation) of terminating the process is ok for applications, this is not acceptable for library components. - Glib has weak support for preallocating structures needed at runtime (for instance use of timers creates a lot of memory allocation activity). To work around the above limitations, the following guidelines need to be followed: - Always check return values of glib functions. - Use safe variants: g_malloc_try(), etc - Current issues (last update 2007-05-04) - g_slist_append() will crash if alloc fails Timers ------ Management of timers is handled by the 'agent' module. Other modules may use timer APIs to get timestamps, but they do not run timers. Glib's timer interface has some problems that have affected the design: - an expired timer will destroy the source (a potentially costly operation) - it is not possible to cancel, or adjust the timer expiration timer without destroying the associated source and creating a new one, which again causes malloc/frees and is potentially a costly operation - on Linux, glib uses gettimeofday() which is subject to clock skew, and no monotonic timer API is available Due to the above, 'agent' code runs fixed interval periodic timers (started with g_timeout_add()) during candidate gathering, connectivity check, and session keepalive phases. Timer frequency is set separately for each phase of processing. A more elegant design would use dynamic timeouts, but this would be too expensive with glib timer infrastructure. Control flow for NICE agent API (NiceAgentClass) ------------------------------------------------ The main library interface for applications using libnice is the NiceAgent GObject interface defined in 'nice/agent.h'. The rough order of control follow is as follows: - creation of NiceAgent object instance - setting agent properties such as STUN and TURN server addresses - connecting the GObject signals with g_signal_connect() to application callback functions - adding local interface addresses to use with nice_agent_add_local_address() And continues when making an initial offer: - creating the streams with nice_agent_add_stream() - attach the mainloop context to connect the NiceAgent sockets to the application's event loop (using nice_agent_attach_recv()) - start candidate gathering by calling nice_agent_gather_candidates() - the application should wait for the "candidate-gathering-done" signal before going forward (so that ICE can gather the needed set of local connectiviy candidates) - get the information needed for sending offer using nice_agent_get_local_candidates() and nice_agent_get_local_credentials() - client should now send the session offer - once it receives an answer, it can pass the information to NiceAgent using nice_agent_set_remote_candidates() and nice_agent_set_remote_credentials() Alternatively, when answering to an initial offer: - the first five steps are the same as above (making initial offer) - pass the remote session information to NiceAgent using nice_agent_set_remote_candidates() and nice_agent_set_remote_credentials() - client can send the answer to session offer Special considerations for a SIP client: - Upon sending the initial offer/answer, client should pick one local candidate as the default one, and encode it to the SDP "m" and "c" lines, in addition to the ICE "a=candidate" lines. - Client should connect to "new-selected-pair" signals. If this signal is received, a new candidate pair has been set as a selected pair (highest priority nominated pair). See ICE specification for a definition of "nominated pairs". - Once all components of a stream have reached the "NICE_COMPONENT_STATE_READY" state (as reported by "component-state-changed" signals), the client should check whether its original default candidate matches the latest selected pair. If not, it needs to send an updated offer it is in controlling mode. Before sending the offer, client should check the "controlling-mode" property to check that it still is in controlling mode (might change during ICE processing due to ICE role conflicts). - The "remote-attributes" SDP attribute can be created from the information provided by "component-state-changed" (which components are ready), "new-selected-pair" (which candidates are selected) and "new-remote-candidate" (peer-reflexive candidates discovered during processing) signals. - Supporting forked calls is not yet supported by the API (multiple sets of remote candidates for one local set of candidates). Restarting ICE: - ICE processing can be restarted by calling nice_agent_restart() - Restart will clean the set of remote candidates, so client must afterwards call nice_agent_set_remote_candidates() after receiving a new offer/answer for the restarted ICE session. - Restart will reinitialize the local credentials (see nice_agent_get_local_credentials()). - Note that to modify the set of local candidates, a new stream has to be created. For the remote party, this looks like a ICE restart as well. Handling fallback to non-ICE operation: - If we are the offering party, and the remote party indicates it doesn't support ICE, we can use nice_agent_set_selected_pair() to force selection of a candidate pair (for remote party, the information on SDP 'm=' and 'c=' lines needs to be used to generate one remote candidate for each component of the streams). This function will halt all ICE processing (excluding keepalives), while still allowing to send and receive media (assuming NATs won't interfere). Notes about sending media: - Client may send media once all components of a stream have reached state of NICE_COMPONENT_STATE_CONNECTED or NICE_COMPONENT_STATE_READY, (as reported by "component-state-changed" signals), and a selected pair is set for all components (as reported by "new-selected-pair" signals). STUN API -------- The underlying STUN library takes care of formatting and parsing STUN messages (lower layer), Applications should only need to use the higher layer API which then uses the lower layer API. The following STUN usages ar

资源文件列表:

libnice-master.zip 大约有198个文件
  1. libnice-master/
  2. libnice-master/.gitignore 64B
  3. libnice-master/.gitlab-ci.yml 11.32KB
  4. libnice-master/.lcovrc 711B
  5. libnice-master/agent/
  6. libnice-master/agent/address.c 10.52KB
  7. libnice-master/agent/address.h 7.85KB
  8. libnice-master/agent/agent-priv.h 12.9KB
  9. libnice-master/agent/agent.c 239.43KB
  10. libnice-master/agent/agent.h 57.97KB
  11. libnice-master/agent/candidate-priv.h 4.13KB
  12. libnice-master/agent/candidate.c 14.66KB
  13. libnice-master/agent/candidate.h 8.62KB
  14. libnice-master/agent/component.c 51.52KB
  15. libnice-master/agent/component.h 12.34KB
  16. libnice-master/agent/conncheck.c 175.58KB
  17. libnice-master/agent/conncheck.h 5.28KB
  18. libnice-master/agent/debug.c 5.01KB
  19. libnice-master/agent/debug.h 3.71KB
  20. libnice-master/agent/discovery.c 44.85KB
  21. libnice-master/agent/discovery.h 5.39KB
  22. libnice-master/agent/inputstream.c 14.79KB
  23. libnice-master/agent/inputstream.h 2.85KB
  24. libnice-master/agent/interfaces.c 23.04KB
  25. libnice-master/agent/interfaces.h 2.81KB
  26. libnice-master/agent/iostream.c 10.87KB
  27. libnice-master/agent/iostream.h 2.85KB
  28. libnice-master/agent/meson.build 1.73KB
  29. libnice-master/agent/outputstream.c 19.68KB
  30. libnice-master/agent/outputstream.h 2.88KB
  31. libnice-master/agent/pseudotcp.c 78.56KB
  32. libnice-master/agent/pseudotcp.h 17.71KB
  33. libnice-master/agent/stream.c 5.29KB
  34. libnice-master/agent/stream.h 4.02KB
  35. libnice-master/AUTHORS 187B
  36. libnice-master/COPYING 237B
  37. libnice-master/COPYING.LGPL 25.91KB
  38. libnice-master/COPYING.MPL 25.06KB
  39. libnice-master/docs/
  40. libnice-master/docs/design.txt 8.78KB
  41. libnice-master/docs/reference/
  42. libnice-master/docs/reference/libnice/
  43. libnice-master/docs/reference/libnice/libnice-docs.xml 4.67KB
  44. libnice-master/docs/reference/libnice/libnice-sections.txt 8.59KB
  45. libnice-master/docs/reference/libnice/meson.build 2.35KB
  46. libnice-master/docs/reference/libnice/states.gv 1.13KB
  47. libnice-master/docs/reference/libnice/states.png 47.59KB
  48. libnice-master/examples/
  49. libnice-master/examples/meson.build 251B
  50. libnice-master/examples/sdp-example.c 8.52KB
  51. libnice-master/examples/simple-example.c 12.69KB
  52. libnice-master/examples/threaded-example.c 13.27KB
  53. libnice-master/gst/
  54. libnice-master/gst/gstnice.c 2.04KB
  55. libnice-master/gst/gstnice.h 1.59KB
  56. libnice-master/gst/gstnicesink.c 14.12KB
  57. libnice-master/gst/gstnicesink.h 2.78KB
  58. libnice-master/gst/gstnicesrc.c 11.67KB
  59. libnice-master/gst/gstnicesrc.h 2.62KB
  60. libnice-master/gst/meson.build 637B
  61. libnice-master/meson.build 9.98KB
  62. libnice-master/meson_options.txt 1.13KB
  63. libnice-master/NEWS 13.75KB
  64. libnice-master/nice/
  65. libnice-master/nice/gen-def.py 281B
  66. libnice-master/nice/gen-map.py 320B
  67. libnice-master/nice/libnice.sym 4.46KB
  68. libnice-master/nice/libnice.ver 56B
  69. libnice-master/nice/meson.build 2.44KB
  70. libnice-master/nice/nice-version.h.in 463B
  71. libnice-master/nice/nice.h 2.32KB
  72. libnice-master/nice/nice.pc.in 363B
  73. libnice-master/random/
  74. libnice-master/random/meson.build 452B
  75. libnice-master/random/random-glib.c 2.55KB
  76. libnice-master/random/random-glib.h 1.76KB
  77. libnice-master/random/random.c 3.37KB
  78. libnice-master/random/random.h 2.29KB
  79. libnice-master/random/test.c 2.37KB
  80. libnice-master/README 1.77KB
  81. libnice-master/socket/
  82. libnice-master/socket/http.c 20.16KB
  83. libnice-master/socket/http.h 1.77KB
  84. libnice-master/socket/meson.build 366B
  85. libnice-master/socket/pseudossl.c 10.38KB
  86. libnice-master/socket/pseudossl.h 2.21KB
  87. libnice-master/socket/socket-priv.h 4.28KB
  88. libnice-master/socket/socket.c 14.49KB
  89. libnice-master/socket/socket.h 4.92KB
  90. libnice-master/socket/socks5.c 14.72KB
  91. libnice-master/socket/socks5.h 1.75KB
  92. libnice-master/socket/tcp-active.c 8.82KB
  93. libnice-master/socket/tcp-active.h 1.74KB
  94. libnice-master/socket/tcp-bsd.c 13.03KB
  95. libnice-master/socket/tcp-bsd.h 2.08KB
  96. libnice-master/socket/tcp-passive.c 9.49KB
  97. libnice-master/socket/tcp-passive.h 1.94KB
  98. libnice-master/socket/udp-bsd.c 11.61KB
  99. libnice-master/socket/udp-bsd.h 1.76KB
  100. libnice-master/socket/udp-turn-over-tcp.c 13.19KB
  101. libnice-master/socket/udp-turn-over-tcp.h 1.79KB
  102. libnice-master/socket/udp-turn.c 69.06KB
  103. libnice-master/socket/udp-turn.h 2.74KB
  104. libnice-master/stun/
  105. libnice-master/stun/constants.h 5.08KB
  106. libnice-master/stun/debug.c 3.15KB
  107. libnice-master/stun/debug.h 3.07KB
  108. libnice-master/stun/meson.build 778B
  109. libnice-master/stun/rand.c 2.13KB
  110. libnice-master/stun/rand.h 1.69KB
  111. libnice-master/stun/stun5389.c 3.5KB
  112. libnice-master/stun/stun5389.h 2.22KB
  113. libnice-master/stun/stunagent.c 24.49KB
  114. libnice-master/stun/stunagent.h 21.55KB
  115. libnice-master/stun/stuncrc32.c 7.64KB
  116. libnice-master/stun/stuncrc32.h 1.86KB
  117. libnice-master/stun/stunhmac.c 8.45KB
  118. libnice-master/stun/stunhmac.h 2.44KB
  119. libnice-master/stun/stunmessage.c 20.01KB
  120. libnice-master/stun/stunmessage.h 35.95KB
  121. libnice-master/stun/tests/
  122. libnice-master/stun/tests/check-bind.sh 1.04KB
  123. libnice-master/stun/tests/meson.build 680B
  124. libnice-master/stun/tests/test-bind.c 12.35KB
  125. libnice-master/stun/tests/test-conncheck.c 12.04KB
  126. libnice-master/stun/tests/test-format.c 8.66KB
  127. libnice-master/stun/tests/test-hmac.c 2.73KB
  128. libnice-master/stun/tests/test-parse.c 23.99KB
  129. libnice-master/stun/tests/test-turn.c 7.1KB
  130. libnice-master/stun/tools/
  131. libnice-master/stun/tools/meson.build 264B
  132. libnice-master/stun/tools/stunbdc.c 5.02KB
  133. libnice-master/stun/tools/stund.c 7.5KB
  134. libnice-master/stun/tools/stund.h 1.8KB
  135. libnice-master/stun/usages/
  136. libnice-master/stun/usages/bind.c 14.49KB
  137. libnice-master/stun/usages/bind.h 6.05KB
  138. libnice-master/stun/usages/ice.c 12.08KB
  139. libnice-master/stun/usages/ice.h 9.2KB
  140. libnice-master/stun/usages/timer.c 4.23KB
  141. libnice-master/stun/usages/timer.h 7.6KB
  142. libnice-master/stun/usages/turn.c 14.67KB
  143. libnice-master/stun/usages/turn.h 11.88KB
  144. libnice-master/stun/utils.c 3.46KB
  145. libnice-master/stun/utils.h 2.24KB
  146. libnice-master/stun/win32_common.h 2.53KB
  147. libnice-master/subprojects/
  148. libnice-master/subprojects/glib.wrap 225B
  149. libnice-master/subprojects/zlib.wrap 449B
  150. libnice-master/tests/
  151. libnice-master/tests/docker/
  152. libnice-master/tests/docker/centos7-meson/
  153. libnice-master/tests/docker/centos7-meson/Dockerfile 1.22KB
  154. libnice-master/tests/docker/centos7-meson/pip-installs.sh 302B
  155. libnice-master/tests/docker/fedora38/
  156. libnice-master/tests/docker/fedora38/pip-installs.sh 47B
  157. libnice-master/tests/libnice.supp 7.76KB
  158. libnice-master/tests/meson.build 3.16KB
  159. libnice-master/tests/test-add-remove-stream.c 2.48KB
  160. libnice-master/tests/test-address.c 9.52KB
  161. libnice-master/tests/test-bsd.c 13.47KB
  162. libnice-master/tests/test-build-io-stream.c 15.16KB
  163. libnice-master/tests/test-bytestream-tcp.c 3.69KB
  164. libnice-master/tests/test-consent.c 19.13KB
  165. libnice-master/tests/test-credentials.c 6.48KB
  166. libnice-master/tests/test-different-number-streams.c 8.03KB
  167. libnice-master/tests/test-drop-invalid.c 19.89KB
  168. libnice-master/tests/test-fallback.c 21.07KB
  169. libnice-master/tests/test-fullmode-with-stun.c 1.5KB
  170. libnice-master/tests/test-fullmode.c 41.25KB
  171. libnice-master/tests/test-gstreamer.c 9.83KB
  172. libnice-master/tests/test-icetcp.c 17.96KB
  173. libnice-master/tests/test-interfaces.c 3.3KB
  174. libnice-master/tests/test-io-stream-cancelling.c 4.08KB
  175. libnice-master/tests/test-io-stream-closing-read.c 3.56KB
  176. libnice-master/tests/test-io-stream-closing-write.c 3.6KB
  177. libnice-master/tests/test-io-stream-common.c 17.06KB
  178. libnice-master/tests/test-io-stream-common.h 3.98KB
  179. libnice-master/tests/test-io-stream-pollable.c 5.11KB
  180. libnice-master/tests/test-io-stream-thread.c 4.42KB
  181. libnice-master/tests/test-new-trickle.c 26.33KB
  182. libnice-master/tests/test-nomination.c 8.66KB
  183. libnice-master/tests/test-priority.c 3.9KB
  184. libnice-master/tests/test-pseudotcp-fin.c 36.77KB
  185. libnice-master/tests/test-pseudotcp-fuzzy.c 12.93KB
  186. libnice-master/tests/test-pseudotcp-random.sh 200B
  187. libnice-master/tests/test-pseudotcp.c 7.55KB
  188. libnice-master/tests/test-restart.c 17.7KB
  189. libnice-master/tests/test-send-recv.c 43.31KB
  190. libnice-master/tests/test-set-port-range.c 2.34KB
  191. libnice-master/tests/test-socket-is-based-on.c 4.13KB
  192. libnice-master/tests/test-tcp.c 5.1KB
  193. libnice-master/tests/test-thread.c 11.27KB
  194. libnice-master/tests/test-trickle.c 15.18KB
  195. libnice-master/tests/test-turn.c 12.3KB
  196. libnice-master/tests/test-udp-turn-fragmentation.c 6.19KB
  197. libnice-master/tests/test.c 3.9KB
  198. libnice-master/TODO 603B
0评论
提交 加载更多评论
其他资源 c语言做的绘图板系统 zip
c语言做的绘图板系统 zip
纯c语言迷宫源码.zip
纯c语言迷宫源码.zip
系统与服务器iso镜像大全
爆肝搜集,完全免费
尚硅谷SpringCloud(Alibaba) 课堂练习源码
尚硅谷SpringCloud(Alibaba) 课堂练习源码
单机版坦克大战代码(计算机体系结构课内实验)
java语言编写 基于案例代码设计自己的坦克大战游戏(单机版),并为以后扩展为网络对战版预留接口。 1. 基于MVC或者分成架构设计,设计每个层各负责什么职责,提供什么功能; 2. 使用依赖倒置原则、以及回调函数技术,改写案例代码,将图形绘制功能移植到View层,并阐述这样做的好处,比如如何更换显示图片以及是否支持3D显示等; 3. 修改控制层,修改为:我方坦克跟随鼠标位置作为方向,使用鼠标右键开炮;键盘的空格支持我方坦克开炮;界面上我方坦克最多可以同时(1个屏幕)发射3发炮弹;地方坦克随机出生,且地方坦克同时不多于5辆; 4. 新增一些组件完成如下要求: (1)控制游戏开始、结束、存档功能,并统计游戏时长和击毁敌方坦克数; (2)支持地图功能,新增草丛、河流,坦克在草丛中时不显示(练习碰撞检测)、坦克不能跨过河流;
基于SpringBoot人事管理系统-课程设计-idea-MySQL
摘 要 为了提高*****区商贸酒店办公效率,现需开发一套专业化、自动化、智能化、规范化的职工人事管理系统。该职工人事管理系统可以对员工信息进行管理,对部门和部门岗位管理,以及招聘管理、培训管理、奖惩管理、薪资管理等功能。该系统界面简洁大方,美观易使用。具有查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等优点。将功能性强与技术性完美结合,以便在为用户带来便利的同时节省时间成本。 本系统采用基于Java语言的Springboot框架开发,MySQL作为数据库,MyBatis为持久框架,以及Layui-mini后台框架。通过功能测试、性能测试和压力测算,可以满足该*****区商贸酒店办公的基本需求,实现了预期的设计目标。 职工人事管理是所有单位或企业内每一个人事部都必须面对的工作,但目前仍有少部分单位或企业等仍在使用传统的人工方式管理人事资料。该方式有很多不足之处,例如效率低、保密性低、比较繁琐、比较麻烦。另外,随着单位或企业内员工的増加,与之对应的工作量也将大大增加。这必将增加人事管理者的工作量和劳动强度,这会给员工资料信息的查找、更新和维护都带来很多困难。
大学生期末前端项目vue3+vant4+移动端 水果商城
关注后下载哈,这里的就是源码,安装node后用 pnpm install 然后 pnpm dev就可以了,yarn或npm直接替换掉前面的pnpm就可以了
大学生期末前端项目vue3+vant4+移动端 水果商城 大学生期末前端项目vue3+vant4+移动端 水果商城 大学生期末前端项目vue3+vant4+移动端 水果商城
基于 SpringBoot 的社区居民友爱互助平台
基于 SpringBoot 的社区居民友爱互助平台,Java+VUE,后端代码+前端代码+数据库sql文件+数据库解读文档