well, I changed code. server.nim: import asyncnet, asyncdispatch, nativesockets var clients {.threadvar.}: seq[AsyncSocket] proc processClient(client: AsyncSocket) {.async.} = while true: let msg = await client.recvLine() for c in clients: let (address, port) = c.getFd.getPeerAddr(Domain.AF_INET) echo "send to: " & address & ":" & $port await c.send(msg & "\c\L") proc serve() {.async.} = clients = @[] var server = newAsyncSocket() server.bindAddr(Port(12345)) server.listen() while true: let client = await server.accept() let (address, port) = client.getFd.getPeerAddr(Domain.AF_INET) echo "client connected: " & address & ":" & $port clients.add client asyncCheck processClient(client) asyncCheck serve() runForever()
client.nim import asyncnet, asyncdispatch proc readServer(c: AsyncSocket) {.async.} = while true: let msg = await c.recvLine() echo "-> " & msg proc sendClientMsg (c: AsyncSocket) {.async.} = while true: let msg = stdin.readLine() echo "<- " & msg await c.send(msg & "\c\L") var client {.threadvar.}: AsyncSocket client = newAsyncSocket() asyncCheck client.connect("127.0.0.1", Port(12345)) asyncCheck readServer(client) asyncCheck sendClientMsg(client) runForever() server_output Running executable client connected: 127.0.0.1:36138 send to: 127.0.0.1:36138 but client don't receive any data I don't understand why line msg = await c.recvLine() don't receive data from server