Avatar billede maqhem Nybegynder
21. juni 2007 - 13:55 Der er 7 kommentarer og
1 løsning

Meget simpel socket

Jeg sidder lige og bakser med en TCP/IP socket, og kan ikke helt få det til at virke.

Jeg sidder og tester lokalt, da jeg lige til have det til at virke først, men Flash stritter lidt imod. Jeg har lavet en meget simpel client og en meget simpel server i C#, som sammen duer perfekt, hvor jeg kan sende lidt data fra client til server i løbet af et split sekund, og nu vil jeg så have flettet Flash ind i det. Men problemet er, at hvis jeg benytter en simpel kode som denne:

info.text = "Connecting...";
var socket:XMLSocket = new XMLSocket()
socket.onConnect = function (success:Boolean) {
    if(success) {
        info.text = "Connected";
        socket.send("data");
    } else {
        info.text = "Connection failed";
    }
}
if(!socket.connect("127.0.0.1", 2000)) {
    info.text = "Connection failed";
}

Så sender den først dataen, når jeg lukker min publish fra Flash (Ctrl+Enter / exe). Hvordan kan det være, den ikke sender instant?
Avatar billede maqhem Nybegynder
21. juni 2007 - 20:06 #1
Sjovt nok duer det perfekt, hvis jeg sætter en socket.close() på lige efter min send.
Avatar billede maqhem Nybegynder
21. juni 2007 - 20:11 #2
Flash sender altså først mit data, når min connection brydes. Ligger fejlen så i mit C# i stedet for? Det skulle da være meget mystisk, for det duede, da clienten var lavet i C# også.
Avatar billede alexander_j Nybegynder
27. juni 2007 - 16:51 #3
Nedenstående er den grundlæggende kode jeg bruger, når jeg arbejder med socketforbindelser.

Jeg kan huske at min C++ havde lidt problemer med det tegn som flash vælger at afslutte de afsendte data med og dem som C++ gør - så han måtte lave en eller anden tegnkode før det virkede - hvilken husker jeg ikke.

myXMLSocket = new XMLSocket();
myXMLSocket.onConnect=handleConnect;
myXMLSocket.onClose=handleClose;
myXMLSocket.onXML=handleXML;
myXMLSocket.connect(ip, port);
function handleClose(x){
}
function handleConnect(connectionStatus:Boolean){
}
function handleXML(recievedString:String){
}
function sendXML(sendString:String){
    myXMLSocket.send(sendString);
}
Avatar billede alexander_j Nybegynder
12. juli 2008 - 20:07 #4
Et svar? Eller hvad var problemet egentlig?
Avatar billede maqhem Nybegynder
12. juli 2008 - 20:24 #5
Jeg ved ikke nøjagtigt, hvad problemet var, men jeg har da siden fået det til at virke. Men det havde vidst noget at gøre med det tegn, flash afslutter det sendte data med - dette tegn skal nemlig sættes på i endelsen af de meddelelser, der sendes til Flash. Sådan mener jeg, jeg løste det. I hvert fald var din post til en god hjælp. Jeg ved ikke lige, hvorfor jeg glemte dette her spørgsmål. Måske fordi jeg har haft oprettet alt for mange omhandende dette her ;)

Til de nydgærrige, så er tegnkoden for tegnet, meddelelser ender på, 0.
Avatar billede maqhem Nybegynder
12. juli 2008 - 20:25 #6
*nysgærrige
Avatar billede alexander_j Nybegynder
12. juli 2008 - 20:49 #7
Godt det virker nu!
Hvad laver du med sockets? Spil, chat ...?
Avatar billede maqhem Nybegynder
12. juli 2008 - 22:59 #8
Jeg har haft lavet en mikroskopisk chat, men da jeg endnu er for nærrig til at købe mig en server, kører min server application stadig lokalt gennem min router, og derfor kan jeg ikke lave noget endnu ;)
Men så snart jeg får taget mig sammen, skal jeg have lavet nogle spil. Det kunne være sjovt at lave.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester