mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
54 lines
1.2 KiB
Nim
54 lines
1.2 KiB
Nim
discard """
|
|
output: '''
|
|
Hello World
|
|
Hello World
|
|
'''
|
|
"""
|
|
|
|
import asyncdispatch, asyncnet
|
|
|
|
const recvLinePort = Port(6047)
|
|
|
|
proc setupTestServer(): AsyncSocket =
|
|
result = newAsyncSocket()
|
|
result.setSockOpt(OptReuseAddr, true)
|
|
result.bindAddr(recvLinePort)
|
|
result.listen()
|
|
|
|
proc testUnbuffered(): Future[void] {.async.} =
|
|
let serverSock = setupTestServer()
|
|
let serverAcceptClientFut = serverSock.accept()
|
|
|
|
let clientSock = newAsyncSocket(buffered = false)
|
|
let clientConnectFut = clientSock.connect("localhost", recvLinePort)
|
|
|
|
let serverAcceptedClient = await serverAcceptClientFut
|
|
await clientConnectFut
|
|
|
|
await serverAcceptedClient.send("Hello World\c\L")
|
|
|
|
echo await clientSock.recvLine()
|
|
|
|
clientSock.close()
|
|
serverSock.close()
|
|
|
|
proc testBuffered(): Future[void] {.async.} =
|
|
let serverSock = setupTestServer()
|
|
let serverAcceptClientFut = serverSock.accept()
|
|
|
|
let clientSock = newAsyncSocket(buffered = true)
|
|
let clientConnectFut = clientSock.connect("localhost", recvLinePort)
|
|
|
|
let serverAcceptedClient = await serverAcceptClientFut
|
|
await clientConnectFut
|
|
|
|
await serverAcceptedClient.send("Hello World\c\L")
|
|
|
|
echo await clientSock.recvLine()
|
|
|
|
clientSock.close()
|
|
serverSock.close()
|
|
|
|
waitFor testUnbuffered()
|
|
waitFor testBuffered()
|