рефераты рефераты
Главная страница > Курсовая работа: Создание сетевой игры  
Курсовая работа: Создание сетевой игры
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Создание сетевой игры

        closesocket(IPXSocket);

        IPXSocket = INVALID_SOCKET;

        Application->Terminate();

    }

}

//-------------------------разрыв---------------------------------------------

void __fastcall TMainForm::IPXCloseConnection(void)

{

    closesocket(IPXSocket);

    WSACleanup();

}   

TCP.cpp

//---------------------------------------------------------------------------

#pragma hdrstop

#include "TCPIP.h"

#include "Main.h"

#include "Podkluch.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

extern bool IsServer;

extern bool IsHostName;

extern AnsiString ServerHostName;

extern AnsiString ServerHostIP;

extern int KolKub;

extern int MaxOch;

//----------Подключение---------------------------------------------------

void __fastcall TMainForm::TCPIPConnect(void)

{

  if (IsServer==true)

  {

     ClientSocket1->Close();

     ServerSocket1->Open();

  }

  else

  {

     ServerSocket1->Close();

     if (IsHostName)

        ClientSocket1->Host=ServerHostName;

     else

        ClientSocket1->Host=ServerHostIP;

     ClientSocket1->Open();

  }

}

//---------Accept---------------------------------------------------------------

void __fastcall TMainForm::ServerSocket1Accept(TObject *Sender,

      TCustomWinSocket *Socket)

{

    char *strPered=DannieToChar(0,KolKub,MaxOch);

    TCPIPSend(AnsiString(strPered));

    InterfaceBeginNewGame();

    ChangeInterfacePerehodHoda(1);

}

//----------Отправка------------------------------------------------------------

void __fastcall TMainForm::TCPIPSend(AnsiString strSend)

{

  if(IsServer)

     ServerSocket1->Socket->Connections[0]->SendText(strSend);

  else

     ClientSocket1->Socket->SendText(strSend);

 

}

//-------------Получение--------------------------------------------------------

void __fastcall TMainForm::ServerSocket1ClientRead(TObject *Sender,

      TCustomWinSocket *Socket)

{

  if(IsVisitApplicationBox) return;

  AnsiString strPriem=Socket->ReceiveText();

  Priem(CharToMas(strPriem.c_str()));

}

//---------------------------------------------------------------------------

void __fastcall TMainForm::ServerSocket1ClientConnect(TObject *Sender,

      TCustomWinSocket *Socket)

{

//

}

//---------------------------------------------------------------------------

void __fastcall TMainForm::ClientSocket1Connect(TObject *Sender,

      TCustomWinSocket *Socket)

{

//StatusBar1->Panels->Items[0]->Text = "Connect to: " + Socket->RemoteHost;

}

//---------------------------------------------------------------------------

void __fastcall TMainForm::ServerSocket1Listen(TObject *Sender,

      TCustomWinSocket *Socket)

{

//StatusBar1->Panels->Items[0]->Text="Listening...";

}

//--------------Разрыв соединения-------------------------------------------

void __fastcall TMainForm::TCPIPCloseConnection(void)

{

  ServerSocket1->Close();

  ClientSocket1->Close();

}

//-----------Обработка ошибок---------------------------------------------------

void __fastcall TMainForm::ClientSocket1Error(TObject *Sender,

      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

{

 if(ErrorEvent==eeConnect)

 {

   ErrorCode=0;

   Application->MessageBox("Не удалось осуществить соединение с сервером.\nУбедитесь, что сервер ожидает запроса клиента.","Ошибка",MB_OK+MB_ICONHAND);

 }

 else

 {

   Application->MessageBox("Ошибка TCP/IP","Ошибка",MB_OK+MB_ICONHAND);

   Application->Terminate();

 }

}

void __fastcall TMainForm::ServerSocket1ClientError(TObject *Sender,

      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)

{

 //

}

//-----------------------------------------------------------------------------

Netbios.cpp

//---------------------------------------------------------------------------

#pragma hdrstop

#include <winsock.h>

#include <wsnetbs.h>

#include <stdio.h>

#include "NetBios.h"

#include "Main.h"

#include "Podkluch.h"

#define NETBIOS_SERVER_NAME "Kosti Server   "

#define NETBIOS_CLIENT_NAME "Kosti Client   "

#define WSA_ACCEPT   (WM_USER + 1)

#define  WSA_NETEVENT     (WM_USER+2)

//---------------------------------------------------------------------------

#pragma package(smart_init)

SOCKET NetBiosSocket;

sockaddr_nb OurAddress;

sockaddr_nb CallAddress;

extern bool IsServer;

extern int KolKub;

extern int MaxOch;

//----------------------------Подключение---------------------------------------

void __fastcall TMainForm::NetBiosConnect(void)

{

    WSADATA WSAData;

    int rc;

    rc = WSAStartup(MAKEWORD(2,0), &WSAData);

    if (rc != 0)

    {

        Application->MessageBox("Ошибка инициализации WSAStartup","Ошибка",MB_OK+MB_ICONHAND);

        Application->Terminate();

    }

    int Lana;

    for (Lana=0;Lana<1000;Lana++)

    {

        NetBiosSocket = socket(AF_NETBIOS, SOCK_SEQPACKET, -Lana);

        if (NetBiosSocket == INVALID_SOCKET)

        {

            continue;

        }

        memset(&OurAddress, 0, sizeof(OurAddress));

        OurAddress.snb_family = AF_NETBIOS;

        OurAddress.snb_type = NETBIOS_UNIQUE_NAME;

        if(IsServer)

            strcpy(OurAddress.snb_name,NETBIOS_SERVER_NAME);

        else

            strcpy(OurAddress.snb_name,NETBIOS_CLIENT_NAME);

        if (bind(NetBiosSocket, (LPSOCKADDR)&OurAddress, sizeof(sockaddr_nb)) == SOCKET_ERROR)

        {

            closesocket(NetBiosSocket);

            NetBiosSocket = INVALID_SOCKET;

            continue;

        }

        else break;

    }

    if(Lana==1000)

    {

        Application->MessageBox("Не определена Lana","Ошибка",MB_OK+MB_ICONHAND);

        Application->Terminate();

    }

    if(IsServer)

    {

          if(listen(NetBiosSocket, 1) == SOCKET_ERROR )

          {

               Application->MessageBox("Listen Error","Ошибка",MB_OK+MB_ICONHAND);

               closesocket(NetBiosSocket);

               Application->Terminate();

          }

          rc = WSAAsyncSelect(NetBiosSocket, Handle, WSA_ACCEPT, FD_ACCEPT);

          if (rc != 0)

          {

              Application->MessageBox("Ошибка WSAAsyncSelect","Ошибка",MB_OK+MB_ICONHAND);

              closesocket(NetBiosSocket);

              NetBiosSocket = INVALID_SOCKET;

              Application->Terminate();

          }

    }

    else

    {

          memset(&CallAddress, 0, sizeof(CallAddress));

          CallAddress.snb_family = AF_NETBIOS;

          CallAddress.snb_type = NETBIOS_UNIQUE_NAME;

          strcpy(CallAddress.snb_name,NETBIOS_SERVER_NAME);

          if(connect(NetBiosSocket , (PSOCKADDR  )&CallAddress, sizeof(CallAddress)) < 0)

          {

              Application->MessageBox("Connect Error","Ошибка",MB_OK+MB_ICONHAND);

              closesocket(NetBiosSocket);

              Application->Terminate();

          }

          rc = WSAAsyncSelect(NetBiosSocket, Handle, WSA_NETEVENT, FD_READ);

          if (rc != 0)

          {

              Application->MessageBox("Ошибка WSAAsyncSelect","Ошибка",MB_OK+MB_ICONHAND);

              closesocket(NetBiosSocket);

              NetBiosSocket = INVALID_SOCKET;

              Application->Terminate();

          }

    }

   

    WindowProc = NetBiosWndProc;

}

//-------------------Прием и accept---------------------------------------------

void __fastcall TMainForm::NetBiosWndProc(Messages::TMessage &Message)

{

    int rc;

    char Buf[80];

    if (Message.Msg == WSA_NETEVENT)

    {

        if (Message.LParam == FD_READ)

        {

            rc = recv((SOCKET)Message.WParam, Buf, sizeof(Buf)-1, 0);

            if (rc == SOCKET_ERROR)

            {

                rc = WSAGetLastError();

                Application->MessageBox("Ошибка recv NetBios","Ошибка",MB_OK+MB_ICONHAND);

                closesocket(NetBiosSocket);

                NetBiosSocket = INVALID_SOCKET;

                Application->Terminate();

            }

            if (rc >= 1)

            {

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9

рефераты
Новости