|
// socket_example.wren (Corrected)
|
|
import "socket" for Socket
|
|
|
|
System.print("--- Wren Socket Echo Server and Client ---")
|
|
|
|
var serverFiber = Fiber.new {
|
|
var server = Socket.new()
|
|
if (server.listen("localhost", 8080, 5)) {
|
|
System.print("Server listening on localhost:8080")
|
|
while (server.isOpen) {
|
|
server.accept { |err, client|
|
|
|
|
if (err) {
|
|
System.print("Accept error: %(err)")
|
|
return
|
|
}
|
|
|
|
System.print("Client connected!")
|
|
Fiber.new {
|
|
while (client.isOpen) {
|
|
client.read(4096) { |readErr, data|
|
|
if (readErr) {
|
|
System.print("Client disconnected.")
|
|
client.close()
|
|
return
|
|
}
|
|
System.print("Received: %(data)")
|
|
// CORRECTED: Replaced '_' with 'result'
|
|
client.write("Echo: %(data)") { |writeErr, result|
|
|
if (writeErr) System.print("Write error: %(writeErr)")
|
|
}
|
|
}
|
|
}
|
|
}.call()
|
|
}
|
|
}
|
|
} else {
|
|
System.print("Failed to start server.")
|
|
}
|
|
}
|
|
|
|
var clientFiber = Fiber.new {
|
|
var client = Socket.new()
|
|
// CORRECTED: Replaced '_' with 'result'
|
|
client.connect("localhost", 8080) { |err, result|
|
|
if (err) {
|
|
System.print("Client connection error: %(err)")
|
|
return
|
|
}
|
|
|
|
System.print("Client connected to server.")
|
|
// CORRECTED: Replaced '_' with 'result'
|
|
client.write("Hello from Wren!") { |writeErr, result|
|
|
if (writeErr) {
|
|
System.print("Client write error: %(writeErr)")
|
|
return
|
|
}
|
|
|
|
client.read(1024) { |readErr, data|
|
|
if (readErr) {
|
|
System.print("Client read error: %(readErr)")
|
|
} else {
|
|
System.print("Client received: %(data)")
|
|
}
|
|
client.close()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Start the server
|
|
serverFiber.call()
|
|
|
|
// Give the server a moment to start up before connecting the client
|
|
Fiber.sleep(100)
|
|
|
|
// Start the client
|
|
clientFiber.call()
|
|
|
|
// Let the operations complete
|
|
Fiber.sleep(1000)
|