Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
Detektor
53 / 23 / 5
Регистрация: 21.02.2016
Сообщений: 234
1

Игра .ехе + 2 игрока онлайн

10.04.2016, 07:39. Просмотров 480. Ответов 8
Метки нет (Все метки)

Если я запускаю шахматы .ехе ,и с другого компа запускаю тоже,то как прописать подключение через интернет в программе .ехе?

Например нажимаю кнопку "F" - онлайн игра,и должны для начала появиться ip адреса ,у кого запущена эта игра

Подскажите какие функции надо использовать,или на каком языке это пишется

Я думаю подключить свои 2 компа к игре шахматы и сыграть обеими сторонами

Игра на опенгл,окно прописано на win 32 api

Это я чисто из увлечения,дома занимаюсь,если научусь подключать игры через интернет - то сразу на 1 ступень выше стану, это будет круто
0
Миниатюры
Игра .ехе + 2 игрока онлайн   Игра .ехе + 2 игрока онлайн  
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2016, 07:39
Ответы с готовыми решениями:

Игра Морской Бой. Ожидание выстрела игрока
Привет народ. Пишу морской бой, с графикой на JavaFX. Есть главный игровой цикл в котором игрок и...

Игра на два игрока в Super Street Fighter 4
всем хай) на днях скачал super street fighter 4. все норм играется во всех режимах кроме друг...

Добавить второго игрока Игра Вишневый Пирог С++
Игра "Вишневый пирог" В эту игру могут играть два и более игроков. Перед ними пирог, разрезанный на...

Игра, подобная Roguelike - перемещение игрока по карте
В общем, пишу ASCII игрушку, семейства Rogue-like, для того что бы закрепить знание Pascal'я. Как...

8
Detektor
53 / 23 / 5
Регистрация: 21.02.2016
Сообщений: 234
10.04.2016, 08:25  [ТС] 2
Получается надо написать сервер

Значит надо сделать одну страницу на сервере для хранения 784 клеток у шахматной доски,и имена игроков,и чей ход

Значит в каком формате должна быть страница сервера?

И могу ли на своем домене liozenda.ru запустить эту страницу сервера?

Будет простой обмен 800 переменными

И каком языке дописывать обмен в программе .ехе с сервером?

Код примерный самый короткий киньте
0
hays
Программист велосипедист
159 / 46 / 6
Регистрация: 23.11.2014
Сообщений: 313
10.04.2016, 08:32 3
Копайся здесь
0
Detektor
53 / 23 / 5
Регистрация: 21.02.2016
Сообщений: 234
10.04.2016, 08:59  [ТС] 4
Цитата Сообщение от hays Посмотреть сообщение
Копайся здесь
Понятно направление - Windows Socket ,смотрю сайт мискрософта Complete Winsock Server Code,и искал где скачать файлы Win Sock ,не находит поисковик

Пытаюсь на эксперимента скомпилировать код с микрософта:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#undef UNICODE
 
#define WIN32_LEAN_AND_MEAN
 
#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdlib.h>
#include <stdio.h>
 
// Need to link with Ws2_32.lib
#pragma comment (lib, "Ws2_32.lib")
// #pragma comment (lib, "Mswsock.lib")
 
#define DEFAULT_BUFLEN 512
#define DEFAULT_PORT "27015"
 
int __cdecl main(void) 
{
    WSADATA wsaData;
    int iResult;
 
    SOCKET ListenSocket = INVALID_SOCKET;
    SOCKET ClientSocket = INVALID_SOCKET;
 
    struct addrinfo *result = NULL;
    struct addrinfo hints;
 
    int iSendResult;
    char recvbuf[DEFAULT_BUFLEN];
    int recvbuflen = DEFAULT_BUFLEN;
    
    // Initialize Winsock
    iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
    if (iResult != 0) {
        printf("WSAStartup failed with error: %d\n", iResult);
        return 1;
    }
 
    ZeroMemory(&hints, sizeof(hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_flags = AI_PASSIVE;
 
    // Resolve the server address and port
    iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
    if ( iResult != 0 ) {
        printf("getaddrinfo failed with error: %d\n", iResult);
        WSACleanup();
        return 1;
    }
 
    // Create a SOCKET for connecting to server
    ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
    if (ListenSocket == INVALID_SOCKET) {
        printf("socket failed with error: %ld\n", WSAGetLastError());
        freeaddrinfo(result);
        WSACleanup();
        return 1;
    }
 
    // Setup the TCP listening socket
    iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen);
    if (iResult == SOCKET_ERROR) {
        printf("bind failed with error: %d\n", WSAGetLastError());
        freeaddrinfo(result);
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }
 
    freeaddrinfo(result);
 
    iResult = listen(ListenSocket, SOMAXCONN);
    if (iResult == SOCKET_ERROR) {
        printf("listen failed with error: %d\n", WSAGetLastError());
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }
 
    // Accept a client socket
    ClientSocket = accept(ListenSocket, NULL, NULL);
    if (ClientSocket == INVALID_SOCKET) {
        printf("accept failed with error: %d\n", WSAGetLastError());
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }
 
    // No longer need server socket
    closesocket(ListenSocket);
 
    // Receive until the peer shuts down the connection
    do {
 
        iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
        if (iResult > 0) {
            printf("Bytes received: %d\n", iResult);
 
        // Echo the buffer back to the sender
            iSendResult = send( ClientSocket, recvbuf, iResult, 0 );
            if (iSendResult == SOCKET_ERROR) {
                printf("send failed with error: %d\n", WSAGetLastError());
                closesocket(ClientSocket);
                WSACleanup();
                return 1;
            }
            printf("Bytes sent: %d\n", iSendResult);
        }
        else if (iResult == 0)
            printf("Connection closing...\n");
        else  {
            printf("recv failed with error: %d\n", WSAGetLastError());
            closesocket(ClientSocket);
            WSACleanup();
            return 1;
        }
 
    } while (iResult > 0);
 
    // shutdown the connection since we're done
    iResult = shutdown(ClientSocket, SD_SEND);
    if (iResult == SOCKET_ERROR) {
        printf("shutdown failed with error: %d\n", WSAGetLastError());
        closesocket(ClientSocket);
        WSACleanup();
        return 1;
    }
 
    // cleanup
    closesocket(ClientSocket);
    WSACleanup();
 
    return 0;
}
Возникает 2 ошибки....ну это ладно

В общем надо теперь скачать файлы win Sock:

#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment (lib, "Ws2_32.lib")

3 файла вроде надо

В кодах разберусь,там уже почти понятно на 60% ,че операторы означают

Где скачать файлы Win Sock ?
0
Миниатюры
Игра .ехе + 2 игрока онлайн  
Detektor
53 / 23 / 5
Регистрация: 21.02.2016
Сообщений: 234
10.04.2016, 10:45  [ТС] 5
как это собрать без ошибок? windows-socket-api.html

функции исполняемой ваще не было,добавил int main(), и опять main не узнает

короче как всегда проблемы,как опенгл начинал изучать,были 50 проблем как glut подключить...

я понимаю что функция main не та,ошибка там...Но как собрать это без ошибок? windows-socket-api.html
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <windows.h>
//#include <winsock2.h>
//using namespace std; 
 #include <iostream> 
 
#include <stdio.h>
#include <stdlib.h>
 
using namespace std; 
 
int main()
 
{
 
WSADATA wsaData;
int result;
result = WSAStartup( MAKEWORD(2, 2), &wsaData);
if(result != 0)
{
 std::cout << "Ошибка WSAStartup: " << result << std::endl;
 return 1;
}
 
SOCKET clientSocket = INVALID_SOCKET;
clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if( clientSocket == INVALID_SOCKET)
{
 std::cout << "Ошибка socket(): " << WSAGetLastError() << std::endl;
 WSACleanup();
 return 1;
}
 
#define ip "127.0.0.1"
#define port 80
 
sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr(ip);
clientService.sin_port = htons(port);
 
//int result;
result = connect(
   clientSocket, 
   reinterpret_cast< SOCKADDR* >(&clientService), 
   sizeof(clientService)
  );
if(result != 0)
{
 std::cout << "Ошибка в connect(): " << WSAGetLastError() << std::endl;
 WSACleanup();
 return 1;
}
 
 
//int result;
char data[] = "Test";
result = send(clientSocket, data, static_cast< int >(strlen(data)), 0);
if( result < 0 )
{
 std::cout << "Ошибка в send(): " << WSAGetLastError() << std::endl;
 return 1;
}
 
#define bufsize 256
 
char buf[bufsize];
int r;
do
{
 r = recv(clientSocket, buf, bufsize, 0);
 if(r > 0)
  std::cout << "Приянтно " << r << " байт" << std::endl;
 else if(r == 0)
  std::cout << "Соединение разорвано" << std::endl;
 else
  std::cout << "Ошибка в recv(): " << WSAGetLastError() << std::endl;
} while(r > 0);
 
closesocket(clientSocket);
// Если работа с сокетами больше не предполагается вызываем WSACleanup()
WSACleanup();
 
}
1>------ Rebuild All started: Project: Test, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'Test', configuration 'Debug|Win32'
1>Compiling...
1>Test.cpp
1>Linking...
1>Test.obj : error LNK2019: unresolved external symbol _closesocket@4 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _recv@16 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _send@16 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _connect@12 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _htons@4 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _inet_addr@4 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _WSACleanup@0 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _WSAGetLastError@0 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _socket@12 referenced in function _main
1>Test.obj : error LNK2019: unresolved external symbol _WSAStartup@8 referenced in function _main
1>C:\Users\Exella-TWAIN\Documents\Visual Studio 2008\Projects\Test\Debug\Test.exe : fatal error LNK1120: 10 unresolved externals
1>Build log was saved at "file://c:\Users\Exella-TWAIN\Documents\Visual Studio 2008\Projects\Test\Test\Debug\BuildLog.htm"
1>Test - 11 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
0
Detektor
53 / 23 / 5
Регистрация: 21.02.2016
Сообщений: 234
10.04.2016, 12:58  [ТС] 6
Попался исходник в интернете,работает,узнает клиента

Но с другого компьютера не узнает клиента

И сервер не получает сообщения клиента

Я никуда не тороплюсь,просто увлечение кодами,думаю месяца 2,как отправить данные через send

Если вы знаете как переделать код,помогайте )

Socket_test_code1.zip
0
Миниатюры
Игра .ехе + 2 игрока онлайн  
EVP
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
10.04.2016, 13:59 7
Цитата Сообщение от Detektor Посмотреть сообщение
Если я запускаю шахматы .ехе ,и с другого компа запускаю тоже,то как прописать подключение через интернет в программе .ехе?
Посмотри на примеры boost::asio.
Это лучше чем с низкоуровневыми вещами копаться, к тому же кроссплатформенно.
0
Detektor
53 / 23 / 5
Регистрация: 21.02.2016
Сообщений: 234
11.04.2016, 07:02  [ТС] 8
Создал тему : заказываю простую программу за деньги
0
Миниатюры
Игра .ехе + 2 игрока онлайн  
Quadra
10 / 10 / 0
Регистрация: 29.04.2013
Сообщений: 144
14.05.2016, 23:15 9
Писал когда-то на сокетах чат. 1 сервер и N клиентов.
Вот моя древняя тема, посмотрите.
Я вроде даже дописал как надо, без создания тучи процессов, покопаюсь на днях, может найду.
0
14.05.2016, 23:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2016, 23:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Бюджет 4500 гр. Конфигурация работа в Office, AutoCAD, игра Assassin, онлайн игра World of Tanks
Собираю компьютер для сестры. Основные требования: работа в Microsoft Office, AutoCAD, игра...

Хорошая игра в жанре Tower Defence на одного игрока
Порекомендуйте пожалуйста хорошую сингл плеерную игру в жанре tower defence.

Игра "Ним" с двумя кучами для одного игрока
Игра Ним с двумя кучами для одного игрока без ограничений на количество забираемых камней. На...

Для данных значений m, n и известной ставки каждого игрока определить номер игрока, который выиграл и сумму выигрыша
За круглым столом собралось n игроков (n &lt;= 255). Каждый сделал ставку в k монет (1 &lt;= k &lt;= 5)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.