Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Nim 1.70 KB | None | 0 0
  1. import net, nativesockets, os
  2.  
  3. proc server =
  4.   echo "SERVER MODE"
  5.   echo "listening"
  6.  
  7.   let server = newSocket()
  8.  
  9.   bindAddr    server, Port(1234), "127.0.0.1"
  10.   listen      server
  11.  
  12.   var
  13.     client    = newSocket()
  14.     clients   = newSeq[Socket]()
  15.     data      = newString(1024)
  16.  
  17.   setBlocking getFD(server), false
  18.   setBlocking getFD(client), false
  19.  
  20.   while true:
  21.     sleep 1500
  22.    
  23.     try:
  24.       accept      server, client
  25.       add         clients, client
  26.       client =    newSocket()
  27.       setBlocking getFD(client), false
  28.       echo        "New Client"
  29.     except: discard
  30.    
  31.     for c in clients:
  32.       try:
  33.         while true:
  34.           let len = recv(c, cstring(data), len(data))
  35.           if len > 0:
  36.             echo "Client: ", data[0..<len]
  37.             discard trySend(c, "Got it")
  38.           else: break
  39.       except: discard
  40.  
  41. proc client =
  42.   echo "CLIENT MODE"
  43.  
  44.   let socket = newSocket()
  45.  
  46.   while true:
  47.     try:
  48.       connect socket, "127.0.0.1", Port(1234)
  49.       break
  50.     except: sleep 1000
  51.  
  52.   setBlocking   getFD(socket), false
  53.   echo          "Client connected"
  54.  
  55.   var
  56.     data  = newString(1024)
  57.     count = 0
  58.  
  59.   while true:
  60.     sleep 2000
  61.     let msg = "'Count: " & $count & '\''
  62.     echo "Send: ", msg
  63.     if not trySend(socket, msg):
  64.       quit "Cannot send any data"
  65.     inc count
  66.    
  67.     try:
  68.       while true:
  69.         let len = recv(socket, cstring(data), len(data))
  70.         if len > 0:
  71.           echo "Server: ", data[0..<len]
  72.         else: break
  73.     except: discard
  74.  
  75. proc main =
  76.   for i in commandLineParams():
  77.     case i:
  78.     of "client": client()
  79.     of "server": server()
  80.     else: discard
  81.  
  82. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement