-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Tutorial: Sockets
The first thing you need to do is import the sockets module
import sockets
Then you need to create and initialize a TSocket object
<nowiki>var s: TSocket = socket()</nowiki>
After that you can use s.connect("addr", TPort(80))
to connect to a server
Once you connect to a server, you can send and receive messages to/from the server by using s.send("Message")
to send, and s.recv()
to receive.
== Examples ==
= IRC Bot =
import sockets, strutilswhen not defined(strutils.toStringSep):
proc toStringSep(x: int64): string =
var s = $x
result = ""
var j = 0
for i in countdown(len(s)-1, 0):
inc(j)
if j == 4:
result = ‘,’ & result
j = 0
result = s[i] & resultproc toMiB(size: int64): int64 =
return size div 1024 div 1024proc formatSize(size: int64): string =
var gigabytes: int64 = size div 1024 div 1024 div 1024
var megabytes: int64 = size.toMiB()
var kilobytes: int64 = size div 1024
if gigabytes != 0:
return toStringSep(gigabytes) & “GB”
elif megabytes != 0:
return toStringSep(megabytes) & “MB”
elif kilobytes != 0:
return toStringSep(kilobytes) & “KB”
else:
return toStringSep(size) & “B”var s = socket()
s.connect(“irc.freenode.net”, TPort(6667))
s.send(“NICK NimrodBot\c\L”)
s.send(“USER NimrodBot * 0 :IRC Bot programmed in Nimrod!\c\L”)while True:
elif data.split()3 == “:!mem”: var msg = "Occupied memory: " & formatSize(int64(getOccupiedMem())) s.send("PRIVMSG " & data.split()2 & " :" & msg & “\c\L”) elif data.split()3 == “:!freemem”: var msg = "Free memory: " & formatSize(int64(getFreeMem())) s.send("PRIVMSG " & data.split()2 & " :" & msg & “\c\L”) elif data.split()3 == “:!totalmem”: var msg = "Total memory: " & formatSize(int64(getTotalMem())) s.send("PRIVMSG " & data.split()2 & " :" & msg & “\c\L”)
var data: string = ""
discard s.recvLine(data)
echo(data)
if data.split()0 == “PING”:
s.send("PONG " & data.split()1 & “\c\L”)
if data.split()1 == “001”:
s.send(“JOIN #nimrod\c\L”)
if data.split()1 == “PRIVMSG”:
if data.split()3 == “:!about”:
var msg = "NimrodBot 0.1 compiled on " & CompileDate & " " & CompileTime
msg.add(" running on " & hostOS)
s.send("PRIVMSG " & data.split()2 & " :" & msg & “\c\L”)
Intro
Getting Started
- Install
- Docs
- Curated Packages
- Editor Support
- Unofficial FAQ
- Nim for C programmers
- Nim for Python programmers
- Nim for TypeScript programmers
- Nim for D programmers
- Nim for Java programmers
- Nim for Haskell programmers
Developing
- Build
- Contribute
- Creating a release
- Compiler module reference
- Consts defined by the compiler
- Debugging the compiler
- GitHub Actions/Travis CI/Circle CI/Appveyor
- GitLab CI setup
- Standard library and the JavaScript backend
Misc