langs a-z

This commit is contained in:
Ingy döt Net 2013-04-10 22:43:41 -07:00
parent db842d013d
commit d066446780
11389 changed files with 98361 additions and 1020 deletions

View file

@ -0,0 +1,36 @@
use Net;
use Concurrency;
bundle Default {
class SocketServer {
id : static : Int;
function : Main(args : String[]) ~ Nil {
server := TCPSocketServer->New(12321);
if(server->Listen(5)) {
while(true) {
client := server->Accept();
service := Service->New(id->ToString());
service->Execute(client);
id += 1;
};
};
server->Close();
}
}
class Service from Thread {
New(name : String) {
Parent(name);
}
method : public : Run(param : Base) ~ Nil {
client := param->As(TCPSocket);
line := client->ReadString();
while(line->Size() > 0) {
line->PrintLine();
line := client->ReadString();
};
}
}
}

View file

@ -0,0 +1,36 @@
declare
ServerSocket = {New Open.socket init}
proc {Echo Socket}
case {Socket getS($)} of false then skip
[] Line then
{System.showInfo "Received line: "#Line}
{Socket write(vs:Line#"\n")}
{Echo Socket}
end
end
class TextSocket from Open.socket Open.text end
in
{ServerSocket bind(takePort:12321)}
{System.showInfo "Socket bound."}
{ServerSocket listen}
{System.showInfo "Started listening."}
for do
ClientHost ClientPort
ClientSocket = {ServerSocket accept(accepted:$
acceptClass:TextSocket
host:?ClientHost
port:?ClientPort
)}
in
{System.showInfo "Connection accepted from "#ClientHost#":"#ClientPort#"."}
thread
{Echo ClientSocket}
{System.showInfo "Connection lost: "#ClientHost#":"#ClientPort#"."}
{ClientSocket close}
end
end

View file

@ -0,0 +1,7 @@
declare
Socket = {New class $ from Open.socket Open.text end init}
in
{Socket connect(port:12321)}
{Socket write(vs:"Hello\n")}
{System.showInfo "Client received: "#{Socket getS($)}}
{Socket close}

View file

@ -0,0 +1,15 @@
my $socket = IO::Socket::INET.new:
localhost => 'localhost',
localport => 12321,
listen => 1;
while $socket.accept -> $conn {
say "Accepted connection";
async {
while $conn.recv -> $stuff {
say "Echoing $stuff";
$conn.send($stuff);
}
$conn.close;
}
}

View file

@ -0,0 +1,31 @@
NewMap RecData.s()
OpenWindow(0, 100, 200, 200, 100, "Echo Server", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget )
InitNetwork()
CreateNetworkServer(1, 12321)
Repeat
Event = NetworkServerEvent()
ClientID = EventClient()
If Event = #PB_NetworkEvent_Connect ; When a new client has been connected...
AddMapElement(RecData(), Str(ClientID))
ElseIf Event = #PB_NetworkEvent_Data
*Buffer = AllocateMemory(20000)
count = ReceiveNetworkData(ClientID, *Buffer, 20000)
For i = 1 To count
RecData(Str(ClientID)) + Mid( PeekS(*Buffer, count), i , 1)
If Right( RecData(Str(ClientID)), 2) = #CRLF$
SendNetworkString (ClientID, RecData(Str(ClientID)))
Debug IPString(GetClientIP(ClientID)) + ":" + Str(GetClientPort(ClientID)) + " " + RecData(Str(ClientID))
RecData(Str(ClientID)) = ""
EndIf
Next
FreeMemory(*Buffer)
ElseIf Event = #PB_NetworkEvent_Disconnect ; When a client has closed the connection...
DeleteMapElement(RecData(), Str(ClientID))
EndIf
Event = WaitWindowEvent(10)
Until Event = #PB_Event_CloseWindow

View file

@ -0,0 +1,10 @@
server-port: open/lines tcp://:12321
forever [
connection-port: first server-port
until [
wait connection-port
error? try [insert connection-port first connection-port]
]
close connection-port
]
close server-port