der Server is nur leider synchron...
und damit kannste in ORPGs nichts anfangen...
versuch mal über die suche oder auf codeproject usw etwas über asynchrone server entwicklung zu finden...
wenn du noch fragen hast meld dich einfach per pm
Hallo Jungs,
ich hab da mal ne Nachfrage...
und zwar...
ist der Wert 14.000€ RICHTIG? WOLLEN DIE MICH AUFEN ARM NEHMEN?
"Die MCSD.NET Zertifizierung besteht aus 5 Prüfungen und kostet ca. 14.000 €..."
http://de.wikipedia.org/wiki/Microsoft_Certified_Solution_Developer
würd mich über Antworten/Erklärungen fruen
MfG MEt45
das solte kein Problem sein Gentleman hab ich auch und es läuft alles super...
k hat ich jetzt kein großes Problem mit ^^
aba die mods vll
ja das problem is komisch...
ich hatte es wie schon gesagt auch mal nur das is schon länger her sorry 🙁
ps: wenn der fehler bei mir wiederkommen sollte pm ich dich ma...
erstmal falsche section....
zweitens den fehler hat ich auch schon öfters...
meines erachtens passiert das, wenn noch daten übern "stream" gesendet werden
du aba schon am anderen ende die verbindung trennst...
bau doch nen paar ManualResetEvents ein (wartet bis zu ende geschrieben/gelesen wurde):
private ManualResetEvent fReadDone = new ManualResetEvent(true);
private void buttonConnect_Click(...)
{
try
{
server = new UdpClient(5005);
CSocketPacket packet = new CSocketPacket();
server.BeginReceive(new AsyncCallback(UDPReceived), packet);
fReadDone.WaitOne();
}
catch
{
fReadDone.Set(); // error while attempting to read
server.Close();
}
könntest du mal probieren...
nich hauen wenn's nich funktioniert...
hier ne Engine Datenbank ≤ IMO noch sinnvoller als google 😉http://www.devmaster.net/engines/
der Forum Link hat sich schon vor längerem geändert...
ich hab es nur verpennt meinen Beitrag zu editieren!
MFO lebt auf jeden Fall noch...
jedoch hat herbi recht ihr solltet etwas zu euren Vorkenntnissen posten.
grüße MEt45
Jo ich werd's mir heut nacht mit Laptop ziehen
=> is nich so laut, verbraucht weniger Strom und leuchtet nich im dunkeln 😉
danke Jungs !
grüße MEt45
sorry damit kann ich dir nich helfen,
aber gehört das nich in Netzwerktechnologie?
Ihr habt natürlich beide Recht!
Danke herbi für deine hex erklärung und
danke talla für die nochmalige erklärung der Maskierung...
In diesem Zusammenhang wird mir jetzt vieles klar...
grüße MEt45!
Hallo Leute,
ich wollt mal wieder ne Frage loswerden..
und zwar:
Was bringt es einem wenn man einen Integer "maskiert"... also z.B. 0x00
wenn ihr mir diese 2 Fragen beantworten könntet wär ich euch sehr dankbar
grüße MEt45
Hallo Leute,
erstmal Entschuldigung das sich mein Thread Titel so komisch anhört.
Ich weiß jedoch nicht wie ich es anders ausdrücken soll...
nun zu meinem Problem:
Die Frage beschränkt sich auf "((value >> 8 ) & 0xff)"
was bedeutet das genau?
...benutzt die 8 niederwertigen Bits für value und die 8 höherwertigen Bits für 0xFF...
oder wie soll ich das verstehen?
Memorystream fStream = new MemoryStream();
protected void WriteD(long value)
{
fStream.WriteByte((byte)(value & 0xff));
fStream.WriteByte((byte)((value >> 8) & 0xff));
fStream.WriteByte((byte)((value >> 16) & 0xff));
fStream.WriteByte((byte)((value >> 24) & 0xff));
}
bitte klärt mich auf...
grüße MEt45
also ganz egal ist es nicht, denn wenn der server asynchron ist und er die anfragen alle asynchron erledigen soll, wäre es eventuell auch ganz nützlich wenn der client asynchron arbeitet um mehrere schritte "gleichzeitig" auszuführen
das ist auch nen gutes Beispiel für den Anfang:
http://www.codeproject.com/cs/internet/socketsincs.asp
Hallo Jungs das ist vll ne doofe Frage...
(jedoch möchte ich hier nicht den ganzen netzwerk code posten)
also meine Frage ist:
Woran könnte es liegen wenn ich vom Client aus nen Packet verschicke davon aber nur 4 bytes ankommen (4 bytes ist alleine der Packet Header groß) und der Rest (ID/PW) auf der Strecke bleibt?
ich kann aber definitiv sagen das alles rausgeht/gesendet wird...
also kann es am Client nicht liegen...
und andersrum funktioniert es einwandfrei ich kann soviele daten an den client senden wie ich will 🤔
zur Info:
könnt ihr vll mal spekulieren? oder mir weiterhelfen?
ich wär euch sehr verbunden X(
grüße MEt45
du musst es so machen
if (Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Alt))
{
Application.Run(new myForm());
}
für alle die das selbe Problem haben...
ich habe während des Asynchronen Methodenaufruf(Callback)
den Thread 20 millisekunden schlafen gelegt, damit ist gewehrleistet, dass alle daten empfangen/gesendet werden
Hallo Leute...
ich hab mal ein bisschen damit rumexperimentiert und festgestellt
wenn ich den Server und den Client ganz normal starte und das Packet vom Server aus versenden möchte kommt nix an...
wenn ich jedoch den Client (während der Server läuft) mit dem Debugger durchgehe
empfange ich doch plötzlich was 🤔
sehr komisch...
muss ich eventuell einen thread schlafen legen damit es funktioniert
Facts:
also ich würd es ehrlich gesagt nich mit den while schliefen machen...
btw kriegste du keine endlosschleifen?
probier's mal mit nem try/catch block...
ja hatte mich gerade schon durch 3 seiten google durchgeschlagen XD...
nächstes mal benutze ich die wiki eher 😁
danke nochma 👍 👍 👍
btw welchen Sniffer könntet ihr empfehlen ?
hab schon nen paar runtergeladen, jedoch ist das meiste Mist davon...
danke nochma...
danke erstmal für deine Hilfe, jedoch brauche ich kein Anleitung wie es funktioniert...
die Handshakes und Callbacks habe ich alle schon implementiert...
es geht nur um die Reihenfolge...
hmm na gut dann müsste ich schauen was für mich am sinnvollsten ist...
danke trotzdem für den mehr als ausführliche Wikipedia Artikel !!!
EDIT:
danke misery
so werd ich es jetzt auch machen !
Hallo Leute,
immoment bin ich gerade ein bisschen verwirrt...
wie der Titel schon besagt...
der eine Kollege erzählt mir das der Client connected und der Server sein MainPacket versendet, welches der Client verarbeiten muss...
jedoch dreht nen anderer Kollege das wieder um, also Client sendet zuerst Packets...
nun bin ich nen bissle durcheinander was wäre denn bei einem Authentifizierungsserver
das richtige?
Also logischer wäre ja Client versucht zu connecten sendet seine Protokolldaten, sowie
seine Logindaten, der Server verarbeitet diese dann und sendet dann entweder nen LoginOK oder LoginFail Packet...
oder ist es andersrum sinnvoller?
klärt mich bitte auf!
Server Info:
Asynchron, 1Thread/Client
greetz MEt45
Hallo Leute
wer Interesse hat an unserem Rollenspiel mitzuarbeiten der melde sich bitte bei mir...
MSN/Mail (metallica45@gmx.de)
oder joined im IRC (Server: irc.deltaanime.net Channel: #MFO)
oder ihr guckt einfach mal auf unserer Website: http://mfo.postpacific.com/
oder meinem Blog: http://met45atmfo.spaces.live.com/
dort findet ihr auch schon ein paar Ideen zu dem Game und den Fortschritt bis jetzt...
grüße MEt45
hmm auch ne möglichkeit hatte garnich über flags nachgedacht danke dir...
hmm irgendwie hab ich mal rumprobiert und ein ähnliches beispiel im Forum gefunden nur igendwie bin ich zu verpeilt...
hier ein Beispiel der zu unterteilenden Klasse (class name ... class_end ist in jeder klasse gleich):
class default_npc : (null)
parameter_define_begin
int DesirePqSize 150
int FavorListSize 150
float IdleDesire_DecayRatio 0.000000
float MoveAround_DecayRatio 0.000000
float DoNothing_DecayRatio 0.000000
float Attack_DecayRatio 0.000000
float Chase_DecayRatio 0.000000
float Flee_DecayRatio 0.000000
float GetItem_DecayRatio 0.000000
float Follow_DecayRatio 0.000000
float Decaying_DecayRatio 0.000000
float MoveToWayPoint_DecayRatio 0.000000
float UseSkill_DecayRatio 0.000000
float MoveTo_DecayRatio 0.000000
float EffectAction_DecayRatio 0.000000
float IdleDesire_BoostValue 0.000000
float MoveAround_BoostValue 0.000000
float DoNothing_BoostValue 0.000000
float Attack_BoostValue 0.000000
float Chase_BoostValue 0.000000
float Flee_BoostValue 0.000000
float GetItem_BoostValue 0.000000
float Follow_BoostValue 0.000000
float Decaying_BoostValue 0.000000
float MoveToWayPoint_BoostValue 0.000000
float UseSkill_BoostValue 0.000000
float MoveTo_BoostValue 0.000000
float EffectAction_BoostValue 0.000000
parameter_define_end
handler 0 // NO_DESIRE
variable_begin
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
handler_end
handler 4 // TALK_SELECTED
variable_begin
"talker"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
shift_sp 1
push_event // talker
push_const 32
add
fetch_i
S0. "noquest.htm"
push_string S0
func_call 43 // func[ShowPage]
shift_sp -2
shift_sp -1
handler_end
class_end
und hier nun mein Programm:
#region Lesen
Console.WriteLine("Daten werden gelesen!");
ArrayList al = new ArrayList();
String line;
using (StreamReader file = File.OpenText(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\ai.obj"))
{
while ((line = file.ReadLine()) != null && -1 != file.Peek())
{
if (line.Contains("class"))
{
file.ReadLine();
al.Add(line);
//hier muss noch code hin... hatte auch schon rumprobiert jedoch ergibt das contains "class" nich so viel Sinn
}
}
file.Close();
}
#endregion
#region Schreiben
Console.WriteLine("Daten werden geschreiben!");
StreamWriter sw = new StreamWriter(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\test.txt");
for (int i = 0; i < al.Count; i++)
{
sw.WriteLine(al[i].ToString());
}
sw.Flush();
sw.Close();
#endregion
Console.ReadLine();
könntet ihr mir vll nochmal unter die arme greifen
danke MEt45
hmm ich probier es gleich mal...
danke dir !
Hallo Jungs,
das gnaze Problem is mir nen bischen peinlich <.<
für mich ist die Random Klasse von Java Seite her nich neu und auch nich wenig benutzt....
nur in .NET steh ich voll aufem Schlauch
Random my_rand = new Random();
da bekomm ich die Exception:
'Random' is a 'namespace' but is used like a 'type'
huuuh?
danke dir erstmal für deine HIlfe...
muss ich halt mal gucken wie ich das löse ^^
gruß MEt45
Hallo Leute,
ich steh mal wieder aufem Schlauch...
und zwar möchte ich gerne eine große Textdatei immer am selben merkmal "cutten"
und das sieht wie folgt aus:
class ...(name usw)...
//code
class_end
so sehen die einzelnen klassen aus...
nun frag ich mich jedoch wie kann ich die textdatei so auslesen und immer an dem selben mermal cutten das ich nachher jede einzelne klasse in in einer eigenen liste /etc ablegen kann
danke schonma im vorraus...
grüße MEt45
rofl danke...
ja ich geh immoment halt durch das Galileo Book durch
bin zwar kein Anfänger in der OOP, jedoch Anfänger in der Winsows Programmierung
danke Friedel
PS.: nen bisschen Code is schon editiert/restrukturiert hab nämlich nen paar unötige sachen eingebaut...
thx Friedel dein Tipp war echt gut hab mein proggi jetzt fertig....
jedoch hab ich das AfterSelect Event beibehalten...
hier der code für andere:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode != null && treeView1.SelectedNode.Text != "Recipes")
{
string lala = e.Node.ToString();
string seek = lala.Replace("TreeNode: ", "");
int index = findNodeInfo(seek);
this.richTextBox1.Text = "Recipe" + "\nNumber: " + this.recipe_id[index];
//...
}
private int findNodeInfo(string seek)
{
int jo = -1;
for (int i = 0; i < this.recipe_name.Count; i++)
{
string test = (string) this.recipe_name[i];
if (test.Equals(seek))
{
jo = i;
}
}
return jo;
}
grüße MEt45
danke für die schnelle antwort...
btw hatte garnich an das klick event gedacht aba is select nich im prinzip das selbe?
@ Junky
...sry <.< war mein Fehler ich hatte vorher schon im Forum gesucht, jedoch ham mich die Tags nich weitergebracht und ich hab vergessen sie wieder rauszunehmen
Hallo Leute,
ich hab mal wieder nen dummes Problem...
ich lese eine datei aus Adde meiner parent Node die ausgelesenen Namen als CHild Node...
nun möchte ich, wenn ich eine der Child Nodes selektiert habe information über die passende Child Node in einer richtxtbox ausgeben nur irgendwie habe ich probleme das umzusetzten...
könnt ihr mir vll einen tipp geben (auch zur performance... verwende 2 for loops in einer methode 8o)
hier der code:
using ...
public partial class Form1 : Form
{
//Create Array and Node Info
#region Datafields
private string[] readInfo;
private ArrayList recipe_name;
private ArrayList recipe_id;
TreeNode recipe_p_node;
TreeNode child;
#endregion
public Form1()
{
InitializeComponent();
this.recipe_name = new ArrayList(); //Initialize recipe_name as an array list
this.recipe_id = new ArrayList();
}
private void btnLoad_Click(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
RecipeInfo();
this.label2.Text = this.recipe_name.Count + " Recipes Loaded ";
}
private void RecipeInfo()
{
this.recipe_p_node = new TreeNode();
recipe_p_node.Text = ("Recipes");
treeView1.Nodes.Add(recipe_p_node);
//Begin StreamReader
StreamReader r = File.OpenText(Application.StartupPath + "\\recipe.txt"); // Read recipedata from Startup path
for (int i = 0; -1 != r.Peek(); i++) // if -1 is returned file is fully read
{
readInfo = r.ReadLine().Split('\t');
//Add them to lists
string name = readInfo[1].Substring(1,readInfo[1].Length-2);
this.recipe_name.Add(name);
this.recipe_id.Add(readInfo[2]);
}
r.Close();
#region NODES
for (int i = 0; i < this.recipe_name.Count; i++) //read till the end of the file and add all recipe names to child.
{
this.child = new TreeNode();
child.Text = this.recipe_name[i].ToString();
this.recipe_p_node.Nodes.Add(child);
}
#endregion
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode != null)
{
if (treeView1.SelectedNode.Tag != null)
{
this.richTextBox1.Text = treeView1. !!!und hier weiß ich nicht weiter!!!
}
}
}
}
also mit den einrichtungen der rechte sieht's so aus (ich hatte da mal ne Anleitung für andere geschrieben):
For MSSQL 2000 Users:
-> Start Autorun.exe located in the unpacked SQL-Installation dir.
-> Choose SQL Server 2000 Components
-> Install Database Server
-> Choose Local Computer
-> Create a new Instance of SQL Server, or install Clinet Tools -> Click thorugh it...
-> Choose Server and Client Tools
-> Choose Default (if it isn't checked already)
-> Choose the Installation Path
-> Service Accounts -> Check "Use the same account for each service..." and
"Use the Local System account"
-> Choose Mixed Mode (remember your Login is usually "SA") and enter your password
-> Reboot your Computer.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
For MSSQL 2005 Users:
-> Start the MSSQL 2005 Setup
-> Accept the Terms
-> Click Install
-> Run throught the System Check Setup
-> Choose the Installation Path
-> Choose Mixed Mode (remember your Login is usually "SA") and enter your password
-> Click through the last Install steps
-> Reboot your Computer.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
vll hilft dir die Seite:
http://www.connectionstrings.com/
das wäre ein standar connString
SqlConnection = new SqlConnection("Data Source=(local); Database=pubs; USER id=sa; PASSWORD=yourPW; Trusted_Connection=True ");
wenn du mehrer Clients auf den Server loslassen möchtest brauchst du ein asynchrones verhalten (Serverseitig)...
Asynchroner Server => kann gleichzeitg mehrer Client Anfragen beantworten
Synchroner Server => kann immer nur eine Nachfrage nach der anderen bearbeiten
ich würde vorschlagen
CodeSamples:
I/O Completion Ports kurz IOCP könnte eventuell auch nützlich sein...
http://www.codeproject.com/info/search.asp?cats=2&cats=3&searchkw=IOCP&Submit1=Search&author=&sd=15+Nov+1999&ed=17+Jul+2006
ansonsten guck mal bei google, da findest du sicher auch was
das vom vorposter is auch nich schlecht und einfacher zu verstehen, hatte ich auch schon durchgearbeitet...
dann benutz threading und asynchrone callbacks/handshakes...
bin auch gerade dabei einen auth server zu schreiben...
textbox1.Text = deineVar oder "dein text";
oder das alles wieder so zurück gesetzt wird wie es war...