コード例 #1
0
ファイル: Client.cs プロジェクト: mono/mono-microthreads
        public void Run()
        {
            m_socket = new MicroSocket();

            //Console.Write("-");

            s_connectingSockets++;

            IPAddress baal = IPAddress.Parse("127.0.0.1");
            IPAddress torturer = IPAddress.Parse("192.168.1.1");

            if (m_socket.Connect(baal, 12345) == false)
            {
                Console.WriteLine("Connection failed");
                return;
            }

            s_connectingSockets--;
            s_connectedSockets++;

            /*
            while (s_connectedSockets < 500)
                MicroThread.CurrentThread.Sleep(1000);
            */

            //Console.Write(".");

            long sentBlocks = 0;

            byte[] buf = new byte[m_blockSize];
            while (true)
            {
                m_socket.Send(buf, buf.Length);

                sentBlocks++;
                s_totalBlocksSent++;

                if (sentBlocks >= m_blocksToSend)
                    break;
            }

            //Console.Write("x");
            s_connectedSockets--;

            m_socket.Shutdown();
            m_socket.Close();
        }
コード例 #2
0
        public MicroSocket Accept()
        {
            Print("Begin accepting");

            m_readCS.Enter();
            m_readingThread = MicroThread.CurrentThread;
            m_readingThread.Wait();
            m_readingThread = null;
            m_readCS.Exit();

            Print("Accept returned");

            Socket      newSocket = m_socket.Accept();
            MicroSocket s         = new MicroSocket(newSocket);

            return(s);
        }
コード例 #3
0
ファイル: Server.cs プロジェクト: mono/mono-microthreads
        public static void ListenRun()
        {
            MicroSocket listenSocket = new MicroSocket();

            IPEndPoint ep = new IPEndPoint(IPAddress.Any, 12345);
            listenSocket.Bind(ep);
            listenSocket.Listen(10);

            while (true)
            {
                MicroSocket socket = listenSocket.Accept();

                //Console.WriteLine("Accepted a new socket");
                //Console.Write(".");

                s_connectedSockets++;

                Server server = new Server(socket);
                MicroThread t = new MicroThread(server.SocketRun);
                t.Start();
            }
        }
コード例 #4
0
ファイル: Server.cs プロジェクト: mono/mono-microthreads
 public Server(MicroSocket s)
 {
     m_socket = s;
 }
コード例 #5
0
ファイル: Socket.cs プロジェクト: mono/mono-microthreads
        public MicroSocket Accept()
        {
            Print("Begin accepting");

            m_readCS.Enter();
            m_readingThread = MicroThread.CurrentThread;
            m_readingThread.Wait();
            m_readingThread = null;
            m_readCS.Exit();

            Print("Accept returned");

            Socket newSocket = m_socket.Accept();
            MicroSocket s = new MicroSocket(newSocket);
            return s;
        }
コード例 #6
0
ファイル: Socket.cs プロジェクト: mono/mono-microthreads
 internal static void RemoveSocket(MicroSocket s)
 {
     s_socketList.Remove(s);
     s_socketMap.Remove(s.Socket);
 }
コード例 #7
0
ファイル: Socket.cs プロジェクト: mono/mono-microthreads
 internal static void AddSocket(MicroSocket s)
 {
     s_socketList.Add(s);
     s_socketMap[s.Socket] = s;
 }
コード例 #8
0
 internal static void AddSocket(MicroSocket s)
 {
     s_socketList.Add(s);
     s_socketMap[s.Socket] = s;
 }