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

Reply via email to