ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
3680
3680
EMPFEHLEN
-
Tach zusammen,
also habe das Problem das bei beinem Clientobject.cs (siehe Tutorial unter Clientklasse)
zweimal dieser Fehler kommt:
Dieser kommt bei:Code :1
Der Typ- oder Namespacename "client" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)
und:Code :1
private static [B]client[/B] myParent;
Und bei Serverobject.cs (siehe Tutorial unter Serverklasse)Code :1 2 3 4 5 6
public ClientObject([B]client [/B]parent, string mynick) { myParent = parent; nick = mynick; guid = Guid.NewGuid(); }
kommt dieser Fehler:
und zwar bei:Code :1
Der Name "client" ist im aktuellen Kontext nicht vorhanden.
Code :1 2 3 4 5 6 7 8 9 10
public bool _sendText(string text) { text = DateTime.Now.ToShortTimeString() + " " + [B]client[/B]._nick + @"\> " + text; // ausgabe ein wenig verschönern foreach (IClient user in _clients.Values) { user._setText(text); // text wird übermittelt } return true; }
Schonmal Danke für die HilfeGeändert von Alaitoc (08.04.08 um 11:23 Uhr)
-
Achja das Tutorial ist hier zu finden:
http://www.tutorials.de/forum/net-tu...hatserver.html
-
Hm...soweit gelöst...nur nu kommt:
Code :1
Auf den Typ System.Runtime.Remoting.ObjRef kann aufgrund von Sicherheitseinschränkungen nicht zugegriffen werden.
bei:
Code :1
remServer._login(myClient);
-
Denke es könnte vll. an
liegen aber wenn ich es auf tru setzte funtzts auch net...wie stell ich den die Sicherheit da genau aus?Code :1
ChannelServices.RegisterChannel(myChannel,false);
-
hi zusammen, habe dasselbe problem wie Alaitoc:
in der Zeile
bekomme ich dieselbe exception.Code :1
remServer._login(myClient);
nun hab ich aber gesehen, dass in der vorangestellten zeile
beim debuggen folgender hinweis kommt:Code :1 2
remServer = (IServer) Activator.GetObject(typeof(IServer), "tcp://" + txtIP.Text.Trim() + ":" + txtPort.Text.Trim() + "/chat.rem");
System.Runtime.Remoting.RemotingException: Remoting cannot find field '__identity' on type 'System.MarshalByRefObject'.
Server stack trace:vermag irgendjemand da draussen ein licht in mein dunkel zu bringen ? Alaitoc, hast du das noch lösen können ?
at System.Object.GetFieldInfo(String typeName, String fieldName)
at System.Object.FieldGetter(String typeName, String fieldName, Object& val)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.Object.FieldGetter(String typeName, String fieldName, Object& val)
at System.RuntimeFieldHandle.GetValue(Object instance, RuntimeTypeHandle fieldType, RuntimeTypeHandle declaringType, Boolean& domainInitialized)
at System.Reflection.RtFieldInfo.InternalGetValue(Object obj, Boolean doVisibilityCheck, Boolean doCheckConsistency)
at System.Reflection.RtFieldInfo.GetValue(Object obj)
at Microsoft.Office.Tools.Debugger.Tools.TryCreateDebuggerItem(MemberInfo member, Object target, __Item& item)
danke schonmal vorweg und liebe grüsse
-
Ich hab es eher durch Zufall hinbekommen und mit etwas Hilfe von nem Kollegen, jedoch kann ich grad nicht nachschauen...weiß nurnoch das ich mich schonmal nicht an das Tutorial gehalten hatte..
Sobald ich in der Lage bin werde ich nachschauen.
MfG Alaitoc
-
Oh, das wäre super. Ich stehe momentan ziemlich am Berg.
-
Tut mir leid,
dass ich erst jetzt antworte...hatte viel zu tun und habe leider das Projekt nicht mehr gefunden...jedoch hab ich dort einfach den TCPClient und TCPListener benutzt.
Falls ich Zeit habe, kann ich mal schauen ob ich etwas Code zusammengebastelt kriege...versuch am besten Mal einfach eine Verbindung herzustellen.
Falls du das hingekriegt hast, musste immer deinen Text in Bytes umwandeln und dann versenden und der Empfänger muss sie dann zurückwandeln..
Ich meld mich wieder, sobald ich was habe.
MfG Alaitoc
-
ja das versuch ich mal, danke vorerst.
-
Ziemlich verspätet,
aber hier mal trotzdem das Projekt...leider in VB.net...aber einfach mal in nen Converter zu C# schmeißen, falls du das in C# brauchst.
Musste die Datei leider doppelt verpacken, weil man hier kein *.rar hochladen kann.
MfG Alaitoc
-
25.08.09 15:44 #11Solved Tutorials.de Gastzugang
Hi,
nachdem ich zufällig auf das selbe Tutorial stoß und den selben Fehler erfuhr, habe ich es in C# zum laufen bekommen. Dem Autor wird es wohl wenig nutzen, sondern eher den Leuten die diesen Thread finden.
Hier die Lösung:
Umschreiben auf Serverseite:
private void startServer()
{
txtPort.Enabled = false; // damit nicht geändert wird während der server läuft
rtbLog.Text += "server wird gestartet...\r\n";
BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = int.Parse(txtPort.Text.Trim());
myChan = new TcpChannel(props, null, provider);
rtbLog.Text += "TcpChannel wird registriert..\r\n";
ChannelServices.RegisterChannel(myChan, true);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(ServerObject), "chat.rem", WellKnownObjectMode.Singleton);
rtbLog.Text += "fertig!\r\nServer ist gestartet und lauscht am Port " + txtPort.Text;
}
und auf Clientseite:
private void connect()
{
txtNickname.Enabled = false;
txtIP.Enabled = false;
txtPort.Enabled = false;
BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 0;
myChannel = new TcpChannel(props, null, provider);
ChannelServices.RegisterChannel(myChannel, true);
myClient = new ClientObject(this, txtNickname.Text);
remServer = (IServer)Activator.GetObject(typeof(IServer), "tcp://" + txtIP.Text.Trim() + ":" + txtPort.Text.Trim() + "/chat.rem");
remServer._login(myClient);
}
Dies hat zusätzlich den Vorteil nichtmehr die veraltete Methode "ChannelServices.RegisterChannel(Channel)" zu benutzen.
Viel Spaß am Tutorial für alle suchenden.
-
Ähnliche Themen
-
.Net-Rechte Probleme bei Remoting
Von Xo-mate im Forum .NET Web und KommunikationAntworten: 0Letzter Beitrag: 17.01.08, 12:52 -
Remoting Probleme - Client schreibt nicht in Objekte
Von JackSparrrow im Forum .NET Web und KommunikationAntworten: 0Letzter Beitrag: 13.06.07, 08:19 -
Problem bei einem Tutorial (remoting chat mit c#)
Von marcelz im Forum .NET Web und KommunikationAntworten: 1Letzter Beitrag: 03.10.05, 23:45 -
.NET Remoting Chat [Tutorial] über Internet betreiben
Von Asterix-Ac im Forum .NET ArchivAntworten: 2Letzter Beitrag: 01.05.05, 21:50





Zitieren

Login





