Skip to content

Instantly share code, notes, and snippets.

@xiongxin
Created February 25, 2016 13:10
Show Gist options
  • Save xiongxin/de942b5f2698355adcbe to your computer and use it in GitHub Desktop.
Save xiongxin/de942b5f2698355adcbe to your computer and use it in GitHub Desktop.

Revisions

  1. @sepisoad sepisoad revised this gist May 2, 2015. 2 changed files with 0 additions and 0 deletions.
    File renamed without changes.
    File renamed without changes.
  2. @sepisoad sepisoad revised this gist May 2, 2015. 2 changed files with 21 additions and 22 deletions.
    10 changes: 6 additions & 4 deletions client
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,9 @@
    import net
    import rawsockets
    import strutils

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

    var canQuit = false

    @@ -11,17 +12,18 @@ proc main() =
    var clientSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, false)
    var clientSocketFD = clientSocket.getFD()
    clientSocketFD.setBlocking(false)
    clientSocket.connect(serverAddr, SERVER_PORT, 2000)
    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":

    if message == "exit\c\l":
    clientSocket.close()
    canQuit = true
    clientSocket.skip(0)

    except OSError:
    echo("OSError")
    33 changes: 15 additions & 18 deletions server
    Original file line number Diff line number Diff line change
    @@ -1,38 +1,35 @@
    import net
    import rawsockets

    const SERVER_PORT = Port(1987)
    const BUFF_SIZE = 2048

    var canQuit = false

    proc handleClient(clientSocket: Socket) =
    while true:
    var bufferString: string = "\n"
    var receivedBufferLen = clientSocket.recv(bufferString, BUFF_SIZE)
    echo(receivedBufferLen)
    echo(bufferString)
    var canStopReceiving = false

    if bufferString == "exit" or receivedBufferLen == 0:
    while not canStopReceiving:
    var bufferString: string = ""
    clientSocket.readLine(bufferString);
    echo("Client: " & bufferString)
    if bufferString == "exit":
    clientSocket.close()
    canQuit = true
    break
    canStopReceiving = true

    proc main() =
    try:
    var serverSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, true)
    # var serverSocketFD = serverSocket.getFD()
    # serverSocketFD.setBlocking(false)
    serverSocket.bindAddr(SERVER_PORT)
    echo ("server", " is bound to port ", $SERVER_PORT)
    serverSocket.listen()
    echo ("server", " is listening for an incomming connection...")

    while not canQuit:
    var clientSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, true)
    var clientSocketFD = clientSocket.getFD()
    clientSocketFD.setBlocking(false)
    serverSocket.accept(clientSocket)
    handleClient(clientSocket)

    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")
  3. @sepisoad sepisoad created this gist May 1, 2015.
    29 changes: 29 additions & 0 deletions client
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,29 @@
    import net
    import rawsockets

    const SERVER_PORT = Port(1987)
    let serverAddr = "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(serverAddr, SERVER_PORT, 2000)

    while not canQuit:
    var message: string
    stdout.write("message: ")
    message = stdin.readLine()
    clientSocket.send(message)
    if message == "exit":
    clientSocket.close()
    canQuit = true
    clientSocket.skip(0)

    except OSError:
    echo("OSError")

    main()
    43 changes: 43 additions & 0 deletions server
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    import net
    import rawsockets

    const SERVER_PORT = Port(1987)
    const BUFF_SIZE = 2048

    var canQuit = false

    proc handleClient(clientSocket: Socket) =
    while true:
    var bufferString: string = "\n"
    var receivedBufferLen = clientSocket.recv(bufferString, BUFF_SIZE)
    echo(receivedBufferLen)
    echo(bufferString)

    if bufferString == "exit" or receivedBufferLen == 0:
    clientSocket.close()
    canQuit = true
    break

    proc main() =
    try:
    var serverSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, true)
    # var serverSocketFD = serverSocket.getFD()
    # serverSocketFD.setBlocking(false)
    serverSocket.bindAddr(SERVER_PORT)
    serverSocket.listen()

    while not canQuit:
    var clientSocket = newSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, true)
    var clientSocketFD = clientSocket.getFD()
    clientSocketFD.setBlocking(false)
    serverSocket.accept(clientSocket)
    handleClient(clientSocket)

    serverSocket.close()
    except OSError:
    echo("OSError")
    return

    echo("finished...")

    main()