mirror of
https://github.com/nim-lang/Nim.git
synced 2026-05-01 03:24:41 +00:00
fix sendTo and recvFrom in asyncnet (#14154)
* added high level sendTo and recvFrom to std/asyncnet; tests were also added. * add .since annotation, a changelog entry and fixed to standard library style guide. * Improved asserts msgs and added notes for use with UDP sockets * pointers removed in parameters and fixes * added .since annotation * minor fixes
This commit is contained in:
@@ -21,9 +21,7 @@ proc saveReceivedPort(port: Port) =
|
||||
recvports = recvports + int(port)
|
||||
|
||||
proc launchSwarm(serverIp: string, serverPort: Port) {.async.} =
|
||||
var
|
||||
buffer = newString(16384)
|
||||
i = 0
|
||||
var i = 0
|
||||
|
||||
while i < swarmSize:
|
||||
var sock = newAsyncSocket(nativesockets.AF_INET, nativesockets.SOCK_DGRAM,
|
||||
@@ -36,16 +34,13 @@ proc launchSwarm(serverIp: string, serverPort: Port) {.async.} =
|
||||
var k = 0
|
||||
|
||||
while k < messagesToSend:
|
||||
zeroMem(addr(buffer[0]), 16384)
|
||||
|
||||
let message = "Message " & $(i * messagesToSend + k)
|
||||
|
||||
await sendTo(sock, message, serverIp, serverPort)
|
||||
await asyncnet.sendTo(sock, serverIp, serverPort, message)
|
||||
|
||||
let (size, fromIp, fromPort) = await recvFrom(sock, addr buffer[0],
|
||||
16384)
|
||||
let (data, fromIp, fromPort) = await recvFrom(sock, 16384)
|
||||
|
||||
if buffer[0 .. (size - 1)] == message:
|
||||
if data == message:
|
||||
saveSendingPort(localPort)
|
||||
|
||||
inc(recvCount)
|
||||
@@ -59,17 +54,13 @@ proc launchSwarm(serverIp: string, serverPort: Port) {.async.} =
|
||||
proc readMessages(server: AsyncSocket) {.async.} =
|
||||
let maxResponses = (swarmSize * messagesToSend)
|
||||
|
||||
var
|
||||
buffer = newString(16384)
|
||||
i = 0
|
||||
var i = 0
|
||||
|
||||
while i < maxResponses:
|
||||
zeroMem(addr(buffer[0]), 16384)
|
||||
|
||||
let (size, fromIp, fromPort) = await recvFrom(server, addr buffer[0], 16384)
|
||||
let (data, fromIp, fromPort) = await recvFrom(server, 16384)
|
||||
|
||||
if buffer.startswith("Message ") and fromIp == "127.0.0.1":
|
||||
await sendTo(server, buffer[0 .. (size - 1)], fromIp, fromPort)
|
||||
if data.startswith("Message ") and fromIp == "127.0.0.1":
|
||||
await sendTo(server, fromIp, fromPort, data)
|
||||
|
||||
inc(msgCount)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user