/doc/reference/sockets.md

https://github.com/vyzo/gerbil · Markdown · 581 lines · 471 code · 110 blank · 0 comment · 0 complexity · 80f17c9dfa337fd433dbbef19545053d MD5 · raw file

  1. # Network Programming with Sockets
  2. Gerbil provides raw socket devices to support network programming with sockets.
  3. See the [tutorial](/tutorials/proxy.md) for example programs.
  4. ## Low Level Interface
  5. ::: tip usage
  6. (import :std/os/socket)
  7. :::
  8. ### socket
  9. ::: tip usage
  10. ```
  11. (socket ...)
  12. ```
  13. :::
  14. Please document me!
  15. ### server-socket
  16. ::: tip usage
  17. ```
  18. (server-socket ...)
  19. ```
  20. :::
  21. Please document me!
  22. ### socket?
  23. ::: tip usage
  24. ```
  25. (socket? ...)
  26. ```
  27. :::
  28. Please document me!
  29. ### socket-bind
  30. ::: tip usage
  31. ```
  32. (socket-bind ...)
  33. ```
  34. :::
  35. Please document me!
  36. ### socket-listen
  37. ::: tip usage
  38. ```
  39. (socket-listen ...)
  40. ```
  41. :::
  42. Please document me!
  43. ### socket-accept
  44. ::: tip usage
  45. ```
  46. (socket-accept ...)
  47. ```
  48. :::
  49. Please document me!
  50. ### socket-connect
  51. ::: tip usage
  52. ```
  53. (socket-connect ...)
  54. ```
  55. :::
  56. Please document me!
  57. ### socket-shutdown
  58. ::: tip usage
  59. ```
  60. (socket-shutdown ...)
  61. ```
  62. :::
  63. Please document me!
  64. ### socket-close
  65. ::: tip usage
  66. ```
  67. (socket-close ...)
  68. ```
  69. :::
  70. Please document me!
  71. ### socket-send
  72. ::: tip usage
  73. ```
  74. (socket-send ...)
  75. ```
  76. :::
  77. Please document me!
  78. ### socket-sendto
  79. ::: tip usage
  80. ```
  81. (socket-sendto ...)
  82. ```
  83. :::
  84. Please document me!
  85. ### socket-sendmsg
  86. ::: tip usage
  87. ```
  88. (socket-sendmsg ...)
  89. ```
  90. :::
  91. Please document me!
  92. ### socket-recv
  93. ::: tip usage
  94. ```
  95. (socket-recv ...)
  96. ```
  97. :::
  98. Please document me!
  99. ### socket-recvfrom
  100. ::: tip usage
  101. ```
  102. (socket-recvfrom ...)
  103. ```
  104. :::
  105. Please document me!
  106. ### socket-recvmsg
  107. ::: tip usage
  108. ```
  109. (socket-recvmsg ...)
  110. ```
  111. :::
  112. Please document me!
  113. ### socket-recvmsg*
  114. ::: tip usage
  115. ```
  116. (socket-recvmsg* ...)
  117. ```
  118. :::
  119. Please document me!
  120. ### socket-getpeername
  121. ::: tip usage
  122. ```
  123. (socket-getpeername ...)
  124. ```
  125. :::
  126. Please document me!
  127. ### socket-getsockname
  128. ::: tip usage
  129. ```
  130. (socket-getsockname ...)
  131. ```
  132. :::
  133. Please document me!
  134. ### socket-getsockopt
  135. ::: tip usage
  136. ```
  137. (socket-getsockopt ...)
  138. ```
  139. :::
  140. Please document me!
  141. ### socket-setsockopt
  142. ::: tip usage
  143. ```
  144. (socket-setsockopt ...)
  145. ```
  146. :::
  147. Please document me!
  148. ### socket-domain
  149. ::: tip usage
  150. ```
  151. (socket-domain ...)
  152. ```
  153. :::
  154. Please document me!
  155. ### socket-address?
  156. ::: tip usage
  157. ```
  158. (socket-address? ...)
  159. ```
  160. :::
  161. Please document me!
  162. ### make-socket-address
  163. ::: tip usage
  164. ```
  165. (make-socket-address ...)
  166. ```
  167. :::
  168. Please document me!
  169. ### make-socket-address-in
  170. ::: tip usage
  171. ```
  172. (make-socket-address-in ...)
  173. ```
  174. :::
  175. Please document me!
  176. ### make-socket-address-in6
  177. ::: tip usage
  178. ```
  179. (make-socket-address-in6 ...)
  180. ```
  181. :::
  182. Please document me!
  183. ### make-socket-address-un
  184. ::: tip usage
  185. ```
  186. (make-socket-address-un ...)
  187. ```
  188. :::
  189. Please document me!
  190. ### socket-address
  191. ::: tip usage
  192. ```
  193. (socket-address ...)
  194. ```
  195. :::
  196. Please document me!
  197. ### socket-address-in
  198. ::: tip usage
  199. ```
  200. (socket-address-in ...)
  201. ```
  202. :::
  203. Please document me!
  204. ### socket-address-in6
  205. ::: tip usage
  206. ```
  207. (socket-address-in6 ...)
  208. ```
  209. :::
  210. Please document me!
  211. ### socket-address-un
  212. ::: tip usage
  213. ```
  214. (socket-address-un ...)
  215. ```
  216. :::
  217. Please document me!
  218. ### socket-address->address
  219. ::: tip usage
  220. ```
  221. (socket-address->address ...)
  222. ```
  223. :::
  224. Please document me!
  225. ### socket-address->string
  226. ::: tip usage
  227. ```
  228. (socket-address->string ...)
  229. ```
  230. :::
  231. Please document me!
  232. ### socket-address-family
  233. ::: tip usage
  234. ```
  235. (socket-address-family ...)
  236. ```
  237. :::
  238. Please document me!
  239. ### Constants
  240. ```
  241. AF_UNSPEC
  242. AF_INET
  243. AF_INET6
  244. AF_UNIX
  245. AF_LOCAL
  246. AF_NETLINK
  247. AF_PACKET
  248. AF_ALG
  249. SOCK_STREAM
  250. SOCK_DGRAM
  251. SOCK_RAW
  252. SOCK_SEQPACKET
  253. SOCK_RDM
  254. SHUT_RD
  255. SHUT_WR
  256. SHUT_RDWR
  257. UNIX_MAX_PATH
  258. SOL_SOCKET
  259. SO_ACCEPTCONN
  260. SO_BINDTODEVICE
  261. SO_BROADCAST
  262. SO_DEBUG
  263. SO_DOMAIN
  264. SO_DONTROUTE
  265. SO_ERROR
  266. SO_KEEPALIVE
  267. SO_LINGER
  268. SO_OOBLINE
  269. SO_PASSCRED
  270. SO_PEERCRED
  271. SO_PEEK_OFF
  272. SO_PROTOCOL
  273. SO_RCVBUF
  274. SO_SNDBUF
  275. SO_RCVLOWAT
  276. SO_SNDLOWAT
  277. SO_RCVTIMEO
  278. SO_SNDTIMEO
  279. SO_REUSEADDR
  280. SO_REUSEPORT
  281. SO_TYPE
  282. SO_TIMESTAMP
  283. SO_USELOOPBACK
  284. IPPROTO_IPV6
  285. IPV6_ADDRFORM
  286. IPV6_ADD_MEMBERSHIP
  287. IPV6_DROP_MEMBERSHIP
  288. IPV6_MTU
  289. IPV6_MTU_DISCOVER
  290. IPV6_MULTICAST_HOPS
  291. IPV6_MULTICAST_IF
  292. IPV6_MULTICAST_LOOP
  293. IPV6_RECVPKTINFO
  294. IPV6_RTHDR
  295. IPV6_AUTHHDR
  296. IPV6_DSTOPTS
  297. IPV6_HOPOPTS
  298. IPV6_FLOWINFO
  299. IPV6_HOPLIMIT
  300. IPV6_ROUTER_ALERT
  301. IPV6_UNICAST_HOPS
  302. IPV6_V6ONLY
  303. IPPROTO_TCP
  304. TCP_CONGESTION
  305. TCP_CORK
  306. TCP_DEFER_ACCEPT
  307. TCP_KEEPCNT
  308. TCP_KEEPIDLE
  309. TCP_KEEPINTVL
  310. TCP_MAXSEG
  311. TCP_NODELAY
  312. TCP_SYNCNT
  313. IP_PMTUDISC_WANT
  314. IP_PMTUDISC_DONT
  315. IP_PMTUDISC_DO
  316. IP_PMTUDISC_PROBE
  317. IPTOS_LOWDELAY
  318. IPTOS_THROUGHPUT
  319. IPTOS_RELIABILITY
  320. IPTOS_MINCOST
  321. MSG_CONFIRM
  322. MSG_CTRUNC
  323. MSG_DONTROUTE
  324. MSG_DONTWAIT
  325. MSG_EOR
  326. MSG_ERRQUEUE
  327. MSG_MORE
  328. MSG_NOSIGNAL
  329. MSG_OOB
  330. MSG_PEEK
  331. MSG_TRUNC
  332. MSG_WAITALL
  333. ```
  334. ## Synchronous Socket Interface
  335. ::: tip usage
  336. (import :std/net/socket)
  337. :::
  338. ### ssocket-connect
  339. ::: tip usage
  340. ```
  341. (ssocket-connect ...)
  342. ```
  343. :::
  344. Please document me!
  345. ### ssocket-listen
  346. ::: tip usage
  347. ```
  348. (ssocket-listen ...)
  349. ```
  350. :::
  351. Please document me!
  352. ### ssocket-accept
  353. ::: tip usage
  354. ```
  355. (ssocket-accept ...)
  356. ```
  357. :::
  358. Please document me!
  359. ### ssocket-send
  360. ::: tip usage
  361. ```
  362. (ssocket-send ...)
  363. ```
  364. :::
  365. Please document me!
  366. ### ssocket-send-all
  367. ::: tip usage
  368. ```
  369. (ssocket-send-all ...)
  370. ```
  371. :::
  372. Please document me!
  373. ### ssocket-recv
  374. ::: tip usage
  375. ```
  376. (ssocket-recv ...)
  377. ```
  378. :::
  379. Please document me!
  380. ### ssocket-recv-all
  381. ::: tip usage
  382. ```
  383. (ssocket-recv-all ...)
  384. ```
  385. :::
  386. Please document me!
  387. ### ssocket-socket
  388. ::: tip usage
  389. ```
  390. (ssocket-socket ...)
  391. ```
  392. :::
  393. Please document me!
  394. ### ssocket-close
  395. ::: tip usage
  396. ```
  397. (ssocket-close ...)
  398. ```
  399. :::
  400. Please document me!
  401. ### ssocket-close-input
  402. ::: tip usage
  403. ```
  404. (ssocket-close-input ...)
  405. ```
  406. :::
  407. Please document me!
  408. ### ssocket-close-output
  409. ::: tip usage
  410. ```
  411. (ssocket-close-output ...)
  412. ```
  413. :::
  414. Please document me!
  415. ### open-ssocket-input-buffer
  416. ::: tip usage
  417. ```
  418. (open-ssocket-input-buffer ...)
  419. ```
  420. :::
  421. Please document me!
  422. ### ssocket-input-buffer?
  423. ::: tip usage
  424. ```
  425. (ssocket-input-buffer? ...)
  426. ```
  427. :::
  428. Please document me!
  429. ### ssocket-input-buffer-timeout-set!
  430. ::: tip usage
  431. ```
  432. (ssocket-input-buffer-timeout-set! ...)
  433. ```
  434. :::
  435. Please document me!
  436. ### open-ssocket-output-buffer
  437. ::: tip usage
  438. ```
  439. (open-ssocket-output-buffer ...)
  440. ```
  441. :::
  442. Please document me!
  443. ### ssocket-output-buffer?
  444. ::: tip usage
  445. ```
  446. (ssocket-output-buffer? ...)
  447. ```
  448. :::
  449. Please document me!
  450. ### ssocket-output-buffer-timeout-set!
  451. ::: tip usage
  452. ```
  453. (ssocket-output-buffer-timeout-set! ...)
  454. ```
  455. :::
  456. Please document me!
  457. ## The Socket Server
  458. ### start-socket-server!
  459. ::: tip usage
  460. ```
  461. (start-socket-server! ...)
  462. ```
  463. :::
  464. Please document me!
  465. ### stop-socket-server!
  466. ::: tip usage
  467. ```
  468. (stop-socket-server! ...)
  469. ```
  470. :::
  471. Please document me!