コード例 #1
0
ファイル: Socket.cs プロジェクト: lineCode/BallGame
        public SocketMessage Connect(string host, int port, SocketProtocolType protocolType)
        {
            int connectionID = MakeUUID();

            try
            {
                var connection = MakeConnection(protocolType);
                connection.HandleMessage = PushMessage;
                connection.Socket.Connect(host, port);
                connection.ConnectionID = connectionID;
                connections.Add(connectionID, connection);

                connection.Start();

                return(new SocketMessage(connectionID, SocketMessageType.Connect, (Buffer)null, 0));
            }
            catch (SocketException se)
            {
                return(new SocketMessage(0, SocketMessageType.Error, BaseConnection.GetErrorMessage(se), 0));
            }
            catch (Exception e)
            {
                return(new SocketMessage(0, SocketMessageType.Error, BaseConnection.GetErrorMessage(e), 0));
            }
        }
コード例 #2
0
    static public Task <SocketMessage> AsyncConnect(string host, int port, SocketProtocolType protocolType)
    {
        var sessionid = MakeSessionID();
        var task      = new TaskCompletionSource <SocketMessage>();

        tasks.Add(sessionid, task);
        socket.AsyncConnect(host, port, protocolType, sessionid);
        return(task.Task);
    }
コード例 #3
0
        BaseConnection MakeConnection(SocketProtocolType protocolType)
        {
            switch (protocolType)
            {
            case SocketProtocolType.Socket:
            {
                return(new MoonConnection());
            }

            case SocketProtocolType.Text:
            {
                return(new StreamConnection());
            }

            default:
                return(null);
            }
        }
コード例 #4
0
        public void AsyncConnect(string host, int port, SocketProtocolType protocolType, int sessionid)
        {
            var connectionID = Guid.NewGuid().ToString();

            try
            {
                var connection = MakeConnection(protocolType);
                connection.HandleMessage = PushMessage;
                connection.ConnectionID  = connectionID;
                var socket = connection.Socket;
                socket.BeginConnect(host, port, (ar) =>
                {
                    try
                    {
                        connections.Add(connectionID, connection);
                        var s = (System.Net.Sockets.Socket)ar.AsyncState;
                        s.EndConnect(ar);
                        PushMessage(new SocketMessage(connectionID, SocketMessageType.Connect, (Buffer)null, sessionid));
                        connection.Start();
                    }
                    catch (SocketException se)
                    {
                        PushMessage(new SocketMessage("", SocketMessageType.Connect, BaseConnection.GetErrorMessage(se), sessionid));
                    }
                    catch (Exception e)
                    {
                        PushMessage(new SocketMessage("", SocketMessageType.Connect, BaseConnection.GetErrorMessage(e), sessionid));
                    }
                }, socket);
            }
            catch (SocketException se)
            {
                connections.Remove(connectionID);
                PushMessage(new SocketMessage("", SocketMessageType.Connect, BaseConnection.GetErrorMessage(se), sessionid));
            }
            catch (Exception e)
            {
                connections.Remove(connectionID);
                PushMessage(new SocketMessage("", SocketMessageType.Connect, BaseConnection.GetErrorMessage(e), sessionid));
            }
        }
コード例 #5
0
 static public SocketMessage Connect(string ip, int port, SocketProtocolType protocolType)
 {
     return(socket.Connect(ip, port, protocolType));
 }