Example #1
0
            static void ProcessAcceptResults(IAsyncResult ar)
            {
                AcceptInfo AI = (AcceptInfo)ar.AsyncState;

                Socket AcceptedSocket;

                try
                {
                    AcceptedSocket = AI.ListeningSocket.EndAccept(ar);
                }
                catch (ObjectDisposedException)
                {
                    // Listening socket was closed
                    return;
                }
                catch (SocketException)
                {
                    return;
                }

                SocketInfo SI = new SocketInfo(AcceptedSocket, AI);

                Console.Write("Successfully received a connection from ");
                Console.WriteLine(AcceptedSocket.RemoteEndPoint.ToString());

                try
                {
                    SI.s.BeginReceive(SI.Buffer, 0, SI.Buffer.Length,
                                      SocketFlags.None, SI.AsyncReceiveCallback, SI);
                }
                catch (SocketException)
                {
                    SI.AI.RemoveSocket(SI.s);
                }

                try
                {
                    AI.ListeningSocket.BeginAccept(AI.AcceptCallback, AI);
                }
                catch (SocketException)
                {
                    return;
                }

                AddSocket(AcceptedSocket);
            }
		private async void yield(AcceptInfo accept)
		{
			//TcpClient c;
			//c.GetStream().ReadAsync(

			var read = await accept.socketId.read();

			// { read = { resultCode = 370 } } 
			//Console.WriteLine(new { read = new { read.resultCode } });



			var u = new Uint8ClampedArray(read.data, 0, (uint)read.data.byteLength);
			var input = Encoding.UTF8.GetString(u);

			new IHTMLPre { new { input } }.AttachToDocument();

			// http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
			var outputString = "HTTP/1.0 200 OK \r\nConnection: close\r\n\r\nhello world\r\n";

			var xx = new Uint8ClampedArray(
				Encoding.UTF8.GetBytes(
					outputString
				)
			);

			//nn.Title = "before headers";
			accept.socketId.write(
				 xx.buffer
			);

			accept.socketId.disconnect();
			accept.socketId.destroy();
		}
Example #3
0
        static void Main(string[] args)
        {
            int Port = ListeningPort;

            // Verify arguments
            if (args.Length < 1 || (args[0] != "IPv4" && args[0] != "IPv6"))
            {
                Console.WriteLine("Usage: TCPServer.exe <IPv4 | IPv6> [port]");
                return;
            }
            if (args.Length >= 2)
            {
                Port = System.Convert.ToInt32(args[1].ToString());
            }

            try
            {
                Socket ListeningSocket;

                if (args[0] == "IPv4")
                {
                    // Create a new socket to listening for client connections.

                    ListeningSocket = new Socket(
                        AddressFamily.InterNetwork,
                        SocketType.Stream,
                        ProtocolType.IP);

                    // Setup a SOCKADDR_IN structure that will tell bind that we
                    // want to listen for connections on all interfaces using port
                    // 5150.

                    IPEndPoint LocalEndPoint = new IPEndPoint(IPAddress.Any, Port);

                    ListeningSocket.Bind(LocalEndPoint);
                }
                else                 // IPv6
                {
                    // Create a new socket to listening for client connections.

                    ListeningSocket = new Socket(
                        AddressFamily.InterNetworkV6,
                        SocketType.Stream,
                        ProtocolType.IP);

                    IPv6EndPoint LocalEndPoint = new IPv6EndPoint(IPv6Address.Any, Port);

                    ListeningSocket.Bind(LocalEndPoint);
                }

                ListeningSocket.Listen(5);

                Console.WriteLine("Server started - Press RETURN to stop the server.");
                Console.WriteLine("Awaiting socket connections...");

                AcceptInfo AI = new AcceptInfo(ListeningSocket);

                for (int i = 0; i < MaxAsyncAccepts; i++)
                {
                    AI.ListeningSocket.BeginAccept(AI.AcceptCallback, AI);
                }

                Console.ReadLine();

                ListeningSocket.Close();
                AI.RemoveAllSockets();

                Console.WriteLine("Pending connections were closed - press RETURN to stop application");
                Console.ReadLine();
            }

            catch (SocketException err)
            {
                Console.WriteLine("Error: " + err.Message);
            }
        }
Example #4
0
 public SocketInfo(Socket NewSocket, AcceptInfo AI)
 {
     this.s  = NewSocket;
     this.AI = AI;
 }