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)); } }
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)); } }