mfc Server Problem...
-
hallo,
ich habe mit VS 2008 ein Programm geschrieben dass auf Port 80 hört und dann einen Text in mein Log Fenster schreibt.Das ganze Projekt ein MFC.Tag 18 ist ein Echo Server.
http://www.aumiller.ch/seiten/buecher/Visual C++ NET in 21 Tagen.pdfIch habe den Echo Server fast Eins zu Eins über nommen, außer dass er etwas zurück sendet.
Zu meinen Client:
[VB]
Imports System.Net.Sockets
Imports System.IOPublic Class Form1
'Variablen:
Dim stream As NetworkStream
Dim streamw As StreamWriter
Dim streamr As StreamReader
Dim Client As New TcpClient
Dim IP As String = "192.168.2.99"
Dim Port As Integer = 80Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Client.Connect(IP, Port) 'Client verbindet sich mit IP: 192.168.111.99 und Port 80
stream = Client.GetStream ' Stream wird auf Client verwiesen
streamw = New StreamWriter(stream) ' Stream zum Senden wird deklariert
streamr = New StreamReader(stream) Stream zum Empfangen wird deklariertDim meintext As String = "hallo Welt"
streamw.WriteLine(meintext)
streamw.Flush()
Client.Close()End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End Sub
End Class
[/VB]Wenn ich von meinem Client aus im IE http://192.168.2.99 eintippe.Dann reagiert der Server sofort mit /get lblablab.
Wenn ich den VB Code in einem Knopf stecke und ausführe. Dann reagiert der Server erst nach 5 Sec.PS.: Wenn jemand Teile von dem C++ Server sehen möchte poste ich sie gerne.
-
ich hab keine ahnung von VB aber vielleicht solltest du mal einen MFC-Clienten schreiben, denn wenn der IE schnell reagiert und dann der MFC-Client auch, dann kanns ja nur an VB liegen das es so lange dauert, wenn das so ist, sollte man vielleicht logischer weise in nen VB-Forum mal fragen.
-
thx,
über ein VB Forum habe ich auch nur schon Gedanken gemacht
Aber es kann auch man c++ Code liegen.Die wo c++ können, können auch meistens vb und nicht umgekehrt.Ich dachte am Anfang VB läuft nur auf Windows Moblie 5.0.Dummerweise habe ich vor kurzen heraus gefunden c++ geht auch.
,leider dann, als mein Projekt schon fast fertig ist.
Aus einem anderen Winkel.
Wenn ich conncet zum Server sende,muss ich dann erst empfangen um wieder zu senden?!
-
ja klar is wie telefonieren, erst musste mal die nummer wählen und dann kannste reden, also erst connecten und dann daten senden, alles andere macht doch wenig sinn, wo soll das hin gehen, bzw. solltest du eigentlich auch nen fehler bekommen das der socket nicht conected ist.
-
nein,nein
Mein momentaner Ablauf:
1.Connect
2.Send(blablabllb)Idee:
1.Connect
2.Reviced(allesklar?)
3.SendDas ist mir spontan eingefallen, nach dem ich den Beitrag gesetzt habe.
-
ok ist setze nochmal an:
Mein Server:
Mein Knopf "listen":
// TODO: Add your control notification handler code here UpdateData(TRUE); m_sListener.Create(m_port); if(m_sListener.Listen()==FALSE) { m_sListener.Close(); return; } CString a,b,c; a = m_log; b = "Listening For Connections!!!"; c = "\r\n"; m_log= a +b+c; UpdateData(FALSE); m_listenbutton.EnableWindow(FALSE); m_stopbutton.EnableWindow(TRUE);
Hier wird Acceptiert:
void CServerDlg::OnAccept() { CString strIP; UINT port; m_log += "Fehlera"; UpdateData(FALSE); if(m_sListener.Accept(m_sConnected)) { //m_sConnected.GetSockName(strIP,port); CString a,b,c; b = "Client Connected,IP :"; c = "\r\n"; a = m_log; m_log = a +b +c; /// hier //m_sConnected.Send("Connected To Server",strlen("Connected To Server")); UpdateData(FALSE); } else { m_log += "Fehler"; UpdateData(FALSE); } }
Mein Client:
VB Imports System Imports System.Text Imports System.IO Imports System.Net Imports System.Net.Sockets Imports System.Runtime.InteropServices Public Class Form1 'Variablen: Dim stream As NetworkStream Dim streamw As StreamWriter Dim streamr As StreamReader Dim Client As New TcpClient Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click log.Text = log.Text + "log gehts" Client.Connect("192.168.2.111", 80) 'Client verbindet sich log.Text = log.Text + "connnet ist fertig" stream = Client.GetStream ' Stream wird auf Client verwiesen streamw = New StreamWriter(stream) ' Stream zum Senden wird deklariert streamr = New StreamReader(stream) streamw.WriteLine("14#2#1!0!0!#2!3!0") log.Text = log.Text + "gesendet" streamw.Flush() log.Text = log.Text + "Flush ausgeführt" Client.Close() End Sub End Class
Bei meinem Server(Laptop) drücke ich auf den Knopf "listen".
Bei meiner Client(PocketPC) drücke ich auf "connect"Dann hängt er bei ...
Client.Connect("192.168.2.111", 80) 'Client verbindet sich
und stürtzt ab nach ca. 5 sec ab.
Wenn ich den VB kram bei meinem Desctop PC nutze, dann gehts ?!
PocketPC, Laptop und Desktop PC sind alles per Wlan verbunden.Wenn ich mit dem IE vom PcoketPC auf den Server zugreife, dann reagiert er sofort.
Ich weis nicht wo ich anfangen soll den Fehler zusuchen,bzw wie soll ich ihn einkesseln?