Cześć,
mam na zadanie domowe w ramach lekcji informatyki zrobić kółko i krzyżyk na multiplayer w Builderze, nie działa mi odbieranie danych, wysyłanie natomiast funkcjonuje bez najmniejszego problemu. Próbowałem już wszystkiego i naprawdę nie wiem, co sprawia, że nie mogę odbierać danych.
Oto mój kod:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #pragma link "ScktComp" TForm2 *Form2; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { tura = true; Memo1->Clear(); koniec = false; // 1 KOLKO // 2 KRZYZYK for (int i=1; i<10; i++) { t[i] = 0; } } void __fastcall TForm2::Image1Click(TObject *Sender) { if(t[1] == 0 && koniec == false && tura == true) { if(serwer) { Image1->Picture->Bitmap->LoadFromFile("o.bmp"); t[1] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("1"); //msg = ServerSocket1->Socket->ReceiveText(); } else { Image1->Picture->Bitmap->LoadFromFile("x.bmp"); t[1] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void __fastcall TForm2::Image2Click(TObject *Sender) { if(t[2] == 0 && koniec == false && tura == true) { if(serwer) { Image2->Picture->Bitmap->LoadFromFile("o.bmp"); t[2] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("2"); } else { Image2->Picture->Bitmap->LoadFromFile("x.bmp"); t[2] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Image3Click(TObject *Sender) { if(t[3] == 0 && koniec == false && tura == true) { if(serwer) { Image3->Picture->Bitmap->LoadFromFile("o.bmp"); t[3] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("3"); } else { Image3->Picture->Bitmap->LoadFromFile("x.bmp"); t[3] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Image4Click(TObject *Sender) { if(t[4] == 0 && koniec == false && tura == true) { if(serwer) { Image4->Picture->Bitmap->LoadFromFile("o.bmp"); t[4] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("4"); } else { Image4->Picture->Bitmap->LoadFromFile("x.bmp"); t[4] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Image5Click(TObject *Sender) { if(t[5] == 0 && koniec == false && tura == true) { if(serwer) { Image5->Picture->Bitmap->LoadFromFile("o.bmp"); t[5] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("5"); } else { Image5->Picture->Bitmap->LoadFromFile("x.bmp"); t[5] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Image6Click(TObject *Sender) { if(t[6] == 0 && koniec == false && tura == true) { if(serwer) { Image6->Picture->Bitmap->LoadFromFile("o.bmp"); t[6] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("6"); } else { Image6->Picture->Bitmap->LoadFromFile("x.bmp"); t[6] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Image7Click(TObject *Sender) { if(t[7] == 0 && koniec == false && tura == true) { if(serwer) { Image7->Picture->Bitmap->LoadFromFile("o.bmp"); t[7] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("7"); } else { Image7->Picture->Bitmap->LoadFromFile("x.bmp"); t[7] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Image8Click(TObject *Sender) { if(t[8] == 0 && koniec == false && tura == true) { if(serwer) { Image8->Picture->Bitmap->LoadFromFile("o.bmp"); t[8] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("8"); } else { Image8->Picture->Bitmap->LoadFromFile("x.bmp"); t[8] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Image9Click(TObject *Sender) { if(t[9] == 0 && koniec == false && tura == true) { if(serwer) { Image9->Picture->Bitmap->LoadFromFile("o.bmp"); t[9] = 1; sprawdz(); ServerSocket1->Socket->Connections[0]->SendText("9"); } else { Image9->Picture->Bitmap->LoadFromFile("x.bmp"); t[9] = 2; sprawdz(); } } } //--------------------------------------------------------------------------- void __fastcall TForm2::Button1Click(TObject *Sender) { if(serwer) { ServerSocket1->Close(); ServerSocket1->Port = 4444; ServerSocket1->Open(); ServerSocket1->Active = true; Memo1->Lines->Add("[+] Serwer uruchomiony"); } else { ClientSocket1->Active = false; ClientSocket1->Address = adres; ClientSocket1->Port = 4444; ClientSocket1->Active = true; Memo1->Lines->Add("[+] Łączenie....."); } } //--------------------------------------------------------------------------- void __fastcall TForm2::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket) { ClientSocket1->Socket->Read(0); Memo1->Lines->Add("[+]Msg: " + Socket->ReceiveText()); } void __fastcall TForm2::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add(Socket->ReceiveText()); } void __fastcall TForm2::ServerSocket1ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("[+] Nowy klient"); } void __fastcall TForm2::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("[*] Polaczono"); } void __fastcall TForm2::ServerSocket1Accept(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("[*] Połączony z: " + Socket->RemoteAddress); } //--------------------------------------------------------------------------- void __fastcall TForm2::ClientSocket1Error(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { Memo1->Lines->Add("Problem z polaczeniem do adresu:" + adres); ErrorCode = 0; } void __fastcall TForm2::ServerSocket1ClientDisconnect(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("[-] Klient rozlaczony"); } void __fastcall TForm2::ClientSocket1Disconnect(TObject *Sender, TCustomWinSocket *Socket) { Memo1->Lines->Add("[-] Klient rozlaczony"); } void __fastcall TForm2::FormCreate(TObject *Sender) { ServerSocket1->Active = false; ClientSocket1->Active = false; } //--------------------------------------------------------------------------- void __fastcall TForm2::Exit1Click(TObject *Sender) { ServerSocket1->Close(); ClientSocket1->Close(); Close(); }
A tutaj cały projekt:
https://bitbucket.org/Saklavi/k_k_builder/get/clean.zip
Z góry dziękuję za pomoc :)