Avatar billede styrk Nybegynder
07. januar 2006 - 02:40 Der er 7 kommentarer og
1 løsning

sende string til ip via udp og modtage responset?

Hejsa,

Hvordan kan jeg sende en kommando, f.eks. \xFF\xFFgetinfo\x00 til gs1.q4pickup.dk med port 28002 samt modtage responset?

Jeg havde forestillet mig to funktioner, en der connecter og en der sender kommandoen og returner hvad den fik som svar..

- Styrk
Avatar billede styrk Nybegynder
07. januar 2006 - 02:43 #1
Jeg har fået lavet mig denne funktiun:

using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace Quake4Admin
{
    public class SocketHandler
    {
        private static Socket ConnectSocket(string server, int port)
        {
            Socket s = null;
            IPHostEntry hostEntry = null;

            // Get host related information.
            hostEntry = Dns.Resolve(server);

            // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
            // an exception that occurs when the host IP Address is not compatible with the address family
            // (typical in the IPv6 case).
            foreach (IPAddress address in hostEntry.AddressList)
            {
                IPEndPoint ipe = new IPEndPoint(address, port);
                Socket tempSocket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Udp);

                tempSocket.Connect(ipe);

                if (tempSocket.Connected)
                {
                    s = tempSocket;
                    break;
                }
                else
                {
                    continue;
                }
            }
            return s;
        }

        // This method requests the home page content for the specified server.
        public static string SocketSendReceive(string server, int port)
        {
            string request = "\xFF\xFFgetinfo\x00";
            Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
            Byte[] bytesReceived = new Byte[256];

            // Create a socket connection with the specified server and port.
            Socket s = ConnectSocket(server, port);

            if (s == null)
                return ("Connection failed");

            // Send request to the server.
            s.Send(bytesSent, bytesSent.Length, 0);

            // Receive the server home page content.
            int bytes = 0;
            string page = "Getinfo from " + server + ":\r\n";

            // The following will block until te page is transmitted.
            do
            {
                bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
                page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
            }
            while (bytes > 0);

            return page;
        }
    }
}

Men når jeg compiler/køre det får jeg følgende fejl:

Protokollen, der blev anmodet om, er ikke konfigureret til systemet, eller der eksistere ingen implementering til den.

Jeg har søgt på google og alle mulige andre steder men kan ikke finde svar på mit problem.
Avatar billede Slettet bruger
07. januar 2006 - 07:33 #2
Har du .NET 2 så

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemnetsocketsudpclientclasstopic.asp

Og lad dig ikke snyde af navnet den kan både sende og modtage.
Avatar billede styrk Nybegynder
07. januar 2006 - 13:21 #3
Jeg prøver sku lige :-)
Avatar billede styrk Nybegynder
07. januar 2006 - 13:36 #4
UdpClient udpClientB = new UdpClient();
udpClientB.Send(sendBytes, sendBytes.Length, host, port);

...

.Send findes ikke i classen udpClient... :S
Avatar billede styrk Nybegynder
07. januar 2006 - 19:46 #5
jeg fik det til at virke men serveren sender mig ??disconnect som response...
Avatar billede styrk Nybegynder
07. januar 2006 - 19:46 #6
hovsa, lav lige et svar..
Avatar billede styrk Nybegynder
08. januar 2006 - 03:26 #7
jamen så køre det - det var bare måden jeg sendte kommandoen til serveren :]
Avatar billede Slettet bruger
08. januar 2006 - 07:30 #8
svar ;)
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