Velena Skrevet 18. januar 2009 Del Skrevet 18. januar 2009 (endret) Har et stort problem med å koble til to ulike program. Søkte selvsagt opp feilmeldingen jeg fikk, men MSDN var ikke spesiellt spesifike, så jeg spør derfor her. Koden til serveren(Denne utføres en gang etter at programmet starter): listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); listener.Bind(new IPEndPoint(myIP, Convert.ToInt32(PortTextBox.Text))); listener.Listen(10); listener.BeginAccept(new AsyncCallback(OnConnectRequest), listener); Koden til klienten (Denne koden utføres når koden over har blitt utført) : IPAddress address = IPAddress.Parse(IPTextBox.Text); int port = Convert.ToInt32(PortTextBox.Text); IPEndPoint ipEnd = new IPEndPoint(address, port); connectorSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); connectorSocket.Connect(ipEnd); Resultatet: SocketException: Et tilkoblingsforsøk mislyktes fordi den tilkoblede parten ikke svarte på riktig måte etter en tidsperiode, eller tilkoblingen mislyktes fordi den tilkoblede verten ikke svarte. Serveren og Klienten ble forøvrig kjørt på to ulike datamaskiner, som begge hadde windowsbrannmuren deaktivert. Endret 18. januar 2009 av Velena Lenke til kommentar
ikono3 Skrevet 18. januar 2009 Del Skrevet 18. januar 2009 (endret) nja kansje internette som var feil... XD Endret 18. januar 2009 av ikono3 Lenke til kommentar
GeirGrusom Skrevet 18. januar 2009 Del Skrevet 18. januar 2009 Jeg har forsåvidt støtt på dette problemet selv. Nå er det en stund siden jeg drev med socket programmering, men hvorfor bruker du ikke TCP listener istedenfor å lage en selv med Socket? Du burde også bruke IPEndPoint sin AddressFamily i constructoren, dette forsikrer deg om at addressfamily alltid er riktig i forhold til addressen du bruker. Men jeg er temmelig usikker på hva som var det faktiske problemer, pass blant annet på at du ikke bruker en port som er i bruk av et annet program, da kan du også få denne feilmeldingen. Jeg kan ikke se at noe er galt med koden din, men du viser heller ikke Accept funksjonen din. Lenke til kommentar
Velena Skrevet 18. januar 2009 Forfatter Del Skrevet 18. januar 2009 GeirGrusom: Jeg regner med at den IP addressen som ligger under DhcpIPAddress i registeret alltid er IPv4. Når det gjelder porten jeg brukte, ser jeg ikke for meg at jeg kjørte noen programmer som brukte 9265 akkurat da. Her er acceptfunksjonen: public void OnConnectRequest(IAsyncResult ar) { Socket RecvSock = (Socket)ar.AsyncState; RecvSock = RecvSock.EndAccept(ar); AsyncCallback recieveData = new AsyncCallback(OnRecievedData); RecvSock.BeginReceive(m_byBuff, 0, m_byBuff.Length, SocketFlags.None, recieveData, RecvSock); } Lenke til kommentar
GeirGrusom Skrevet 20. januar 2009 Del Skrevet 20. januar 2009 (endret) Ahhh! Bytt fra myIP til IPAddress.Any Grunnen er at listener sitter og lytter ett sin egen IP addresse, med Any så godtar den alle IP adresser. Endret 20. januar 2009 av GeirGrusom Lenke til kommentar
Velena Skrevet 20. januar 2009 Forfatter Del Skrevet 20. januar 2009 Det hjalp desverre ikke GeirGrusom =(. Kan det ha noe å gjøre med at den ene datamaskinen bruker et trådløst nettverk? Mener å huske at det oppstår problemer når en bruker porter da. Lenke til kommentar
Sikelik Skrevet 27. januar 2009 Del Skrevet 27. januar 2009 en fin ting å teste, ville vært å kjøre begge kodesnuttene på samme maskin, for å utelukke eventuelle nettverksproblemer. - "Call the Bind method prior to calling the Listen method if you want to specify the local IP address and port number." fra MSDN om System.Net.Sockets - forsøk å bruke TcpListener for å ta imot connections istedenfor å bruke Socket? utdrag fra MSDN: "If you are writing a relatively simple application and do not require maximum performance, consider using TcpClient, TcpListener, and UdpClient. These classes provide a simpler and more user-friendly interface to Socket communications." Lenke til kommentar
ikono3 Skrevet 29. januar 2009 Del Skrevet 29. januar 2009 port forvalde kan kansje virke... Lenke til kommentar
Sikelik Skrevet 30. januar 2009 Del Skrevet 30. januar 2009 portforwarding vil kun være nødvendig om man er på to forskjellige nett, eller hvis man forsøker å koble til via den eksterne ip-adressen. såvidt jeg forstår er disse to maskinene på samme lokalnett, men det kan jo være feil selvfølgelig. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå