Skip to content

Instantly share code, notes, and snippets.

@fowlmouth
Created August 2, 2012 22:35
Show Gist options
  • Save fowlmouth/753ce0b4adbd9accff57 to your computer and use it in GitHub Desktop.
Save fowlmouth/753ce0b4adbd9accff57 to your computer and use it in GitHub Desktop.
import asyncio, sockets
var disp = newDispatcher()
proc clientConnect(s: PAsyncSocket, arg: PObject) {.nimcall.} =
echo("Connected")
s.send("Hello")
proc connect(host: string, port: TPort) =
var client = AsyncSocket(typ = SOCK_DGRAM, protocol = IPPROTO_UDP)
client.handleConnect = clientConnect
disp.register(client)
client.connect(host, port)
connect("localhost", 2048.TPort)
while true:
if not disp.poll():
"Breaking :(".echo
break
import
asyncio, sockets, times,
sg_assets
type
TServer = object
var
disp = newDispatcher()
proc serverRead(s: PAsyncSocket, arg: PObject) {.nimcall.} =
var line = ""
discard s.recvLine(line)
if line == "":
echo("<<nil")
else:
echo("<<", line)
echo(repr(s), repr(arg))
proc serverAccept(s: PAsyncSocket, arg: PObject) {.nimcall.} =
echo("Accepted new client")
var client: PAsyncSocket
new(client)
s.accept(client)
client.handleRead = serverRead
disp.register(client)
proc createServer(port: TPort, buffered = true) =
var server = AsyncSocket(typ = SOCK_DGRAM, protocol = IPPROTO_UDP)
server.handleAccept = serverAccept
disp.register(server)
server.bindAddr(port)
#server.listen()
echo(repr(server))
createServer(2048.TPort)
echo("Listening...")
while true:
if not disp.poll():
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment