Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import std.stdio;
- import std.socket;
- import std.conv;
- import core.thread;
- class ClientFiber : Fiber {
- private Socket sock;
- this(Socket s) {
- this.sock = s;
- super(&run);
- }
- private void run() {
- while(true) {
- sock.send("hi!");
- Fiber.yield();
- }
- }
- }
- int main(string[] args)
- {
- if(args.length == 1)
- {
- auto listener = new Socket(AddressFamily.INET, SocketType.STREAM);
- listener.bind(new InternetAddress(2525));
- listener.listen(10);
- Fiber[] fibers;
- void listen() {
- writeln("listen");
- Socket newclient;
- while(listener.isAlive()) {
- newclient = listener.accept();
- Fiber clientfiber = new ClientFiber(newclient);
- fibers ~= clientfiber;
- Fiber.yield();
- }
- }
- Fiber listenFiber = new Fiber(&listen);
- fibers ~= listenFiber;
- while(true) {
- foreach(f; fibers) {
- f.call();
- writeln("cf");
- }
- }
- }
- else
- {
- auto sock = new Socket(AddressFamily.INET, SocketType.STREAM);
- sock.connect(new InternetAddress("127.0.0.1", 2525));
- while(true) {
- byte[1024] buf;
- int len = sock.receive(buf);
- if(len > 0) {
- string s = (cast(immutable(char)*)buf)[0..len];
- writeln(s);
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement