xiongxin
2/25/2016 - 1:10 PM

nim sockets

nim sockets

import net

const SERVER_PORT = Port(1987)

var canQuit = false

proc handleClient(clientSocket: Socket) =
  var canStopReceiving = false

  while not canStopReceiving:
    var bufferString: string = ""    
    clientSocket.readLine(bufferString);
    echo("Client: " & bufferString)
    if bufferString == "exit":
      clientSocket.close()
      canQuit = true
      canStopReceiving = true    
    
proc main() = 
  try:
    var serverSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, true)
    serverSocket.bindAddr(SERVER_PORT)
    echo ("server", " is bound to port ", $SERVER_PORT)
    serverSocket.listen()
    echo ("server", " is listening for an incomming connection...")

    var clientSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, true)
    var clientSocketFD = clientSocket.getFD()
    clientSocketFD.setBlocking(false)
    serverSocket.accept(clientSocket)
    echo ("server", " has accepted a new connection from: $$$$")
    handleClient(clientSocket)
    serverSocket.close()
  except OSError:
    echo("OSError")
    return

  echo("finished...")

main()
import net
import rawsockets
import strutils

const SERVER_PORT = Port(1987)
const SERVER_ADDR = "localhost"

var canQuit = false

proc main() = 
  try:
    var clientSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, false)
    var clientSocketFD = clientSocket.getFD()
    clientSocketFD.setBlocking(false)
    clientSocket.connect(SERVER_ADDR, SERVER_PORT, 2000)
  
    while not canQuit:
      var message: string 
      stdout.write("message: ")
      message = stdin.readLine()
      message.add("\c\l")  
      clientSocket.send(message)
      
      if message == "exit\c\l":
        clientSocket.close()
        canQuit = true

  except OSError:
    echo("OSError")

main()