|
You last visited: Today at 00:13
Advertisement
Form hängt beim StreamReader (ReadLine)
Discussion on Form hängt beim StreamReader (ReadLine) within the .NET Languages forum part of the Coders Den category.
08/19/2013, 21:41
|
#1
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Form hängt beim StreamReader (ReadLine)
Guten Morgen/Abend/Mittag,
ich wollte mich mehr mit dem Client/Server Prinzip auseinander setzen und eine kleine Konsole für einen Privat Server Emulator schreiben.
Ich kann es senden und der Emu bekommt es auch. Aber wenn ich es receiven will mit dem StreamReader hängt sich die Form auf.
Code:
Code:
Imports System.IO
Imports System.Net.Sockets
Public Class Form1
Public stream As NetworkStream
Public sw As StreamWriter
Public sr As StreamReader
Public client As TcpClient = New TcpClient()
Public IP As String = "127.0.0.1"
Public Port As String = "8080"
Private Sub cmdConnect_Click(sender As Object, e As EventArgs) Handles cmdConnect.Click
Try
client.Connect(IP, Port)
editRecv.Text &= "Successfully connected to: " & IP & ":" & Port & vbCrLf
stream = client.GetStream()
sw = New StreamWriter(stream)
sr = New StreamReader(stream)
Catch
editRecv.Text &= "Error while connecting!"
End Try
End Sub
Private Sub cmdSend_Click(sender As Object, e As EventArgs) Handles cmdSend.Click
sw.WriteLine(txtSend.Text)
sw.Flush()
editRecv.Text &= sr.ReadLine() & vbCrLf
End Sub
End Class
Muss ich noch was anderes machen, oder warum hängt es sich auf und macht nie weiter?
MfG
|
|
|
08/19/2013, 22:52
|
#2
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Es wird als Argument port eine Integer-Variable erwartet...
Wenn es bloß zum Testen ist, kannst du dir auch einen eigenen Server erstellen. Der lässt sich auch debuggen.
Wenn du eine Nachricht empfängst, solltest du das asynchron tun, z. B. in einem weiteren Thread. Damit blockiert das Empfangen nicht.
Hast du überprüft, ob die entsprechenden Zeilenenden gesendet wurden, oder dass dir überhaupt etwas gesendet wurde?
|
|
|
08/19/2013, 23:21
|
#3
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Der soll mir das was in der Konsole steht ausgeben im Client.
Aber es will nicht.
|
|
|
08/19/2013, 23:43
|
#4
|
elite*gold: 0
Join Date: May 2009
Posts: 2,256
Received Thanks: 2,348
|
Debug und schau, was bei "sr.ReadLine()" steht.
Bzw. drück danach F10 und schau ob da ein Fehler kommt oder nicht.
Ansonsten sendet dein Server überhaupt die Information die du haben willst zurück?
greets,
Endecs
|
|
|
08/19/2013, 23:51
|
#5
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Ja er sendet sie. Schon mit Breakpoints geschaut. Er zeigt mir da nichts an.
Also nicht nen leeren String sondern da ist nichts.
|
|
|
08/20/2013, 00:13
|
#6
|
elite*gold: 30
Join Date: May 2010
Posts: 486
Received Thanks: 161
|
Du musst das ganze als Thread laufen lassen.
|
|
|
08/20/2013, 00:27
|
#7
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Quote:
Originally Posted by Darkbanner
Du musst das ganze als Thread laufen lassen.
|
Solltest. Unbedingt.
Quote:
Originally Posted by Requi
Ja er sendet sie.
|
Und wie hast du das herausgefunden?
Laut meiner Glaskugel hängt sich dein Programm bei der Anweisung sr.ReadLine() auf, weil die Methode kein Zeilenende einliest, weil sie überhaupt nichts einliest, wie es scheint. Das liegt daran, dass es nichts einzulesen gibt, dass die TCP-Verbindung nur einseitig genutzt wird, soweit meine Glaskugel das beurteilen kann.
|
|
|
08/20/2013, 01:39
|
#8
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Siehe im Screen oben 
Ich lese es falsch. Das weiß ich.
Ich mache es jz ma schnell und sauber mit mehreren Threads. Mal sehen was raus kommt.
EDIT: Wie gesagt. Ich lese es falsch aus.
Wie ich es auslesen muss, habe ich keine Ahnung. Gesendet wird so:
Code:
public void Send(byte[] response)
{
if (_handler == null || !_handler.Connected) return;
_handler.BeginSend(response, 0, response.Length, 0, SendCallback, _handler);
}
private void SendCallback(IAsyncResult ar)
{
try
{
var handler = (Socket)ar.AsyncState;
var bytesSent = handler.EndSend(ar);
}
catch (Exception e)
{
Out.WriteLine(e.ToString(), "Azure.Conn.Send", ConsoleColor.DarkRed);
}
}
Der Emulator selbst liest so:
Code:
public void ReadCallback(IAsyncResult ar)
{
var bytesRead = _handler.EndReceive(ar);
if (bytesRead <= 0)
{
if (_handler != null)
{
if (_user == null)
Destroy();
else
UserDisconnect();
}
return;
}
var content = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
if (content == "bla")
{
}
}
Der Emulator wurde nicht von mir geschrieben nur als Anmerkung.
|
|
|
08/20/2013, 13:47
|
#9
|
elite*gold: 0
Join Date: Aug 2012
Posts: 236
Received Thanks: 94
|
Wann sendet der Emulator denn? Wenn als Nachricht "bla" ankommt?
Ich nehme an, das Send gehört zum Emulator. Was steht denn in response?
|
|
|
08/20/2013, 13:51
|
#10
|
elite*gold: 0
Join Date: Sep 2005
Posts: 427
Received Thanks: 87
|
Quote:
|
The following code examples demonstrate how to use the Socket class as a client to connect to remote network services and as a server to listen for connections from remote clients.
|
und asynchron lesen
|
|
|
08/20/2013, 14:20
|
#11
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Habs jetzt auch mal geschafft.
Jetzt habe ich das Problem, dass ich nur einmal senden kann.
Anonsten kommt das:
Quote:
Von der Übertragungsverbindung können keine Daten gelesen werden: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen.
|
Kommt dann, wenn ich lesen möchte.
Und im Emu kann auf der verworfene Objekt nicht zugegriffen werden. Aber woran das liegt weiß ich, denke ich mal.
|
|
|
 |
Similar Threads
|
PC Hängt beim Laden.
05/23/2012 - Technical Support - 8 Replies
Hallo Leute,
ich habe folgendes Problem: Mein PC hängt sich der PC beim Laden des Arbeitsspeuchers auf. Nach ewigkeiten lädt er ihn. Anschließend hängt er wieder beim Windows Ladebalken (Vista) und zum schluss noch kurz beim Willkommen.
Wenn der PC an ist, dann läuft alles flüssig und ohne Probleme :D
Das Problm ist entstanden, als ich den Arbeitsspeicher erweitert habe. Zuerst von 2 GB auf 6 GB (2 x 1024 Mb + 2 x 2048 Mb) Nun habe ich aber die 2 1024 MB slots rausgenommen. Das...
|
PC Hängt Sich Beim Kal Starten auf.
01/26/2012 - Kal Online - 12 Replies
ich habe schon wieder ein prob,sorry.
Wenn ich mein kal starte lädt,kocp usw,dann hängt sich mein pc komplett auf und ich muss den neustarten,das is ganze zeit..bitte helfen
|
BF3 hängt sich beim starten auf?!!
12/26/2011 - Battlefield - 0 Replies
Hallo liebe com,
wie der Titel schon sagt habe ich ein Problem mit Battlefield 3. Und zwar sobald ich im Battlelog die Kampagne starten will läuft erstmal alles prima zumindest bis ich ins Menu komme wo man die Optionen und Kampagne starten usw. hat. Wenn ich dann den Schwierigkeitsgrad noch einstelle läd das Spiel einen kurzen mom doch dann hängt es sich auf und reagiert nicht mehr :mad:
Beim Coop und beim Multiplayer siehts anders aus da bleibt er schon bei Matchmaking hängen, also mit...
|
ava hängt beim patchen?
02/06/2011 - Alliance of Valiant Arms - 4 Replies
hi, ich habe vor nem jahr oderso schonmal ava gezockt, habe grade wieder lust bekommen zu zocken..
ich patche schon seit 3 stunden...
er is bei patch 2/8
datei SW-runway.ut3
und das schon seit 2 1/2 stunden
|
Css hängt beim laden
06/29/2010 - Counter-Strike - 3 Replies
ich habe seit ca. 2 wochen das problem, dass sich css beim laden aufhängt.
es lädt einfach, und irgendwann gehts einfach nicht weiter und man muss css über taskmanager beenden.
Pic-Upload.de - Kostenlos Bilder & Fotos hochladen
hier hängt es sich immer auf
kann mir da jemand ne lösung sagen?
PS: reinstallt hab ich schon, bei nem freund, der hat ne i-net verbindung von 18 mb/s -.-
geht trozdem ned
|
All times are GMT +1. The time now is 00:15.
|
|