Skip to content

Instantly share code, notes, and snippets.

@nonylene
Created September 27, 2017 12:38
Show Gist options
  • Select an option

  • Save nonylene/4360c9be3495fcfee24cfeb025506fe4 to your computer and use it in GitHub Desktop.

Select an option

Save nonylene/4360c9be3495fcfee24cfeb025506fe4 to your computer and use it in GitHub Desktop.
raw-socket.nim
import net
import system
import strutils
import nativesockets
proc main(): int =
let socket = net.newSocket(AF_INET, SOCK_RAW, IPPROTO_TCP)
socket.bindAddr(address="127.0.0.1")
# IPPROTO_IP, IP_HDRINCL, true
socket.getFd.setSockOptInt(0, 3, 1)
while true:
let str = socket.recv(size=1)[0]
discard socket.sendTo("127.0.0.1", net.Port(0), "1111111111111111")
echo $strutils.toBin(ord(str), 8) & " " & $ord(str)
return 0
system.quit(main())
@gnusec
Copy link

gnusec commented Oct 15, 2022

Linux

/home/winger/.choosenim/toolchains/nim-1.6.6/lib/pure/nativesockets.nim(717) setSockOptInt
/home/winger/.choosenim/toolchains/nim-1.6.6/lib/pure/includes/oserr.nim(95) raiseOSError
Error: unhandled exception: Protocol not available [OSError]

windows

C:\Users\WMZB.choosenim\toolchains\nim-1.6.6\lib\pure\net.nim(282) newSocket
C:\Users\WMZB.choosenim\toolchains\nim-1.6.6\lib\pure\includes\oserr.nim(95) raiseOSError
Error: unhandled exception: 在一个非套接字上尝试了一个操作。
[OSError]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment