000
22.06.2007, 19:52 Uhr
~RyogaH
Gast
|
Nun ich hoffe es ist okay wenn ich einfach den ganzen Code hier hinschreibe.
Also, mein Problem ist eigentlich mehr in der Endphase. Ich habe zwe iKlassen aus einem, mit c erstellten, Programm erstellt, das Senden konnte. So weit ging das auch. Nun bin ich so weit das ich Oberfläche und dergleichen habe, wie man vielleicht aus dem Code herraus schliesen kann. Wie dem auch sei, ich habe nun nur noch zwei Probleme.
Einmal, das wichtigere Problem!
Wenn ich Text versende, kommt er immer nur dann an, wenn man zwischen den Versendungen, etwa vier Sekunden wartet. TEXT WIRD ABER VERSENDET! ... nur eben alle 4 Sekunden ...!
Zweites und nicht SO wichtiges Problem.
Wenn ich einmal zum Local Host z.B. verbunden bin, kann ich danach zu keinem anderen wechseln. Ich verstehe das nicht ganz wieso oder wie ich das hinkriegen sollte. Erstmal ist aber wichtiger das ich das mit dem Senden hinbekomme und verstehe.
Vielen dank, ich weis es ist bestimmt stressig aber ich brauche wirklich rat ich versuche das schon eine weile und komme nicht weiter.
Wenn ihr den Code sammt klassen braucht habe ich ihn hier: www.geocities.com/baba32132/B_L_A.zip
Und ja, das Porgramm wird BLA heissen, kein Kommentar dazu =D
Aber ich danke allen jetzt schon die sich bemühen diesen Quatsch hinzubiegen, ich bin denjenigen zu einem großen Lob verpflichtet!
PS. Entschuldigung an alle das ich den Thread in die Unit1 schrieb, aber so konnte ich ein bisschen besser die Übersicht behalten!
Code: |
#include <vcl.h> #include <winsock.h> #include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
#pragma hdrstop
#include "Unit1.h" #include "EClient.h" #include "Server.h" class TMyThread; TMyThread* TTThread;
Server serverchat; EClient eclientchat;
class TMyThread : public TThread { public: __fastcall TMyThread::TMyThread(bool CreateSuspended) : TThread(CreateSuspended) { FreeOnTerminate = true; }
void __fastcall Execute() { char* ausgabe; bool schutzi = false; serverchat.bindSocket(); serverchat.startListen(); serverchat.connectingSocket();
while(1) { if(schutzi == false) { schutzi = true; serverchat.reciveText(); schutzi = false; } ausgabe = serverchat.getBuffer(); Form1->addLine(ausgabe); serverchat.deletebuf(); } serverchat.closeConnectSocket(); } };
//--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { eclientchat.startWinsock(); serverchat.InitAcceptSocket(); eclientchat.InitClientSocket(); TTThread=new TMyThread(false); TTThread->Priority = tpHigher; //Chat->Clear(); Eingabefeld->ReadOnly=false; } //--------------------------------------------------------------------------- void TForm1::addLine(char* line) { Chat->Lines->Add(line); Chat->SelLength = 0; Chat->SelStart = Chat->GetTextLen(); ::SendMessage(Chat->Handle, EM_SCROLLCARET, 0, 0); }
void __fastcall TForm1::SendenClick(TObject *Sender) { char* buf; }
void __fastcall TForm1::Enter(TObject *Sender, char &Key) { int pruef; if(Key==13) { if(Eingabefeld->Text!="") { send(eclientchat.gib_clientSocket(),Eingabefeld->Text.c_str(),Eingabefeld->Text.Length(),0); addLine(Eingabefeld->Text.c_str()); Eingabefeld->Text=""; } Eingabefeld->Text=""; } }
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { send(eclientchat.gib_clientSocket(),"Ich bin jetzt Offline...",24,0); eclientchat.closeClientSocket(); serverchat.closeConnectSocket(); serverchat.closeAcceptSocket(); TTThread->Terminate(); eclientchat.closeWinsock(); } //---------------------------------------------------------------------------
void __fastcall TForm1::setitClick(TObject *Sender) { eclientchat.set_IP(setIP->Text.c_str()); eclientchat.konfiguriereSocket(); eclientchat.connecting(); if(eclientchat.get_rc()==SOCKET_ERROR) { addLine("Connecting fehlgeschlagen..."); } } //---------------------------------------------------------------------------
//Mit dieser Befehlszeile, kann ein Winsockerror direkt auf //das Chatfenster ausgegeben werden!
//Form1->addLine(IntToStr(WSAGetLastError()).c_str());
|
|