0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 5
1

Просьба откомпилировать файл

02.04.2015, 12:17. Показов 1073. Ответов 8
Метки нет (Все метки)

Добрый день господа.
Ребята хочу обратиться за помощью. Компельните файл, очень надо не особо разбираюсь.
Кликните здесь для просмотра всего текста
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
//============================================================================
// Name        : 112.cpp
// Author      :
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
 
#include <iostream>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <stdio.h>
#include <algorithm>
#include <unistd.h>
#include <set>
#include <string.h>
#include <map>
#include <errno.h>
 
using namespace std;
map<int,string> clients_name;
set<int> clients;
int _PORT = 1488;
 
bool power = true;
bool _firststop = false;
int _trycount = 0;
 
int ReadInt(int client)
{
        char* buf = new char[4];
        cout <<"BUFFER:               " <<*(int*)buf;
        recv(client,buf,4,0);
        int read_int = *(int*)buf;
        cout << "ReadInt = " << read_int << endl;
        delete[] buf;
        return read_int;
}
 
short ReadShort(int client)
{
        char* buf = new char[2];
        recv(client,buf,2,0);
        short read_short = *(short*)buf;
        cout << "ReadShort = " << read_short << endl;
        delete[] buf;
        return read_short;
}
 
string ReadString(int client)
{
        short tmp_leng = ReadShort(client);
        if(tmp_leng > 0 and tmp_leng < 200)
        {
                char* read_str = new char[tmp_leng];
                recv(client,read_str,tmp_leng,0);
                cout << "read_str = " << read_str << endl;
                string ret_value = string(read_str);
                delete[] read_str;
                if(ret_value.size() > tmp_leng)
                {
                        ret_value = ret_value.substr(0, ret_value.size()-(ret_value.size()-tmp_leng));
                        cout<<"crop";
                }
                cout << "ReadString = "<< tmp_leng <<" : " << ret_value << endl;
                return ret_value;
        }else
                return "false";
}
 
int WriteShort(int client,short msg)
{
        int WriteBytes = send(client,&msg,2,0);
        cout << "WriteShort = " << msg << endl;
        return WriteBytes;
}
 
int WriteInt(int client,int msg)
{
        int WriteBytes = send(client,&msg,4,0);
        cout << "WriteInt = " << msg << endl;
        return WriteBytes;
}
 
int WriteString(int client,string msg)
{
        int32_t tmp_size = msg.size();
        WriteShort(client,tmp_size);
        int WriteBytes = send(client,msg.c_str(),tmp_size,0);
        cout << "WriteString = " << msg << endl;
        return WriteBytes;
}
 
void SendServerList(int it)
{
        int32_t size_buf = 7;
        string temp_strings = "L";
        int32_t cl_count = clients_name.size();
        //size_buf += temp_strings.size();
        for(map<int,string>::iterator it2 = clients_name.begin(); it2!=clients_name.end(); it2++)
        {
                size_buf += 4;
                size_buf += 2;
                size_buf += it2->second.size();
        }
        cout << "size_buf = " << size_buf << endl;
        WriteInt(it,size_buf);
        WriteString(it,temp_strings);
        //send(*it,temp_strings.c_str(),temp_strings.size(),0);
        WriteInt(it,cl_count);
        for(map<int,string>::iterator it2 = clients_name.begin(); it2!=clients_name.end(); it2++)
        {
                int32_t tmp_dl = it2->second.size();
                WriteInt(it,it2->first);
                WriteString(it,it2->second);
                //send(*it,&tmp_dl,4,0);
                //send(*it,it2->second.c_str(),tmp_dl,0);
                cout << it2->second << " : " << tmp_dl << endl;
        }
}
 
void SendServerListForAll()
{
        cout << "Start sending list for all" << endl;
        for(set<int>::iterator it = clients.begin(); it!=clients.end(); it++)
        {
                SendServerList(*it);
        }
        cout << "Sending server list complete" << endl;
}
 
int main() {
        int listener;
        struct sockaddr_in addr;
        listener = socket(AF_INET, SOCK_STREAM, 0);
        if(listener < 0)
        {
                cout << "socket error" << endl;
                return 0;
        }
        fcntl(listener, F_SETFL, O_NONBLOCK);
 
        addr.sin_family = AF_INET;
        addr.sin_port = htons(_PORT);
        addr.sin_addr.s_addr = INADDR_ANY;
        if(bind(listener,(struct sockaddr *)&addr, sizeof(addr)) < 0)
        {
                cout << "bind address error" << endl;
                return 0;
        }
        listen(listener, 2);
        clients.clear();
        //clients_name.clear();
        while(power)
        {
                fd_set readset;
                FD_ZERO(&readset);
                FD_SET(listener,&readset);
                for(set<int>::iterator it = clients.begin(); it != clients.end(); it++)
                        FD_SET(*it, &readset);
                timeval timeout;
                timeout.tv_sec = 0;
                timeout.tv_usec = 100;
                int mx = max(listener, *max_element(clients.begin(),clients.end()));
                //cout << "test?" << endl;
                if(select(mx+1, &readset, NULL,NULL,&timeout) < 0)
                {
                        cout << "error select" << endl;
                        return 0;
                }
                if(FD_ISSET(listener, &readset))
                {
                        cout << "accepting1" << endl;
                        int sock = accept(listener,NULL,NULL);
                        cout << "accepting2" << endl;
                        if(sock < 0)
                        {
                                cout << "accept client error" << endl;
                                return 0;
                        }
                        fcntl(sock,F_SETFL,O_NONBLOCK);
                        _firststop = true;
                        cout << "incoming connection:" << sock << endl;
                        if(ReadInt(sock)==9931337)
                        {
                                clients.insert(sock);
                                cout << "accepted client suc NUM:" << sock << endl;
                                clients_name.insert(pair<int,string>(sock,"ERROR"));
                        }
                        else
                        {
                                cout << "aborted connection:" << sock << endl;
                                close(sock);
                        }
                }
                for(set<int>::iterator itr = clients.begin(); itr!=clients.end(); itr++)
                {
                        int it = *itr;
                        if(FD_ISSET(it,&readset))
                        {
                        //      bytes_read = recv(*it,buf,4,0);
 
                                //cout << "bytes_read = " << bytes_read << endl;
 
                                string comands = ReadString(it);
                                if(comands == "" or comands == "false")
                                {
                                        cout <<"Errnum: " <<  errno << endl;
 
                                        cout << "Client " << clients_name[it] << " disconnect" << it << endl;
                                        close(it);
                                        clients.erase(it);
                                        clients_name.erase(it);
                                        SendServerListForAll();
                                        continue;
                                }
                                if(comands == "a")
                                {
                                        string name = ReadString(it);
                                        clients_name[it] = name;
                                        SendServerListForAll();
                                }
                                else if(comands == "A")
                                {
                                        string pl_name = ReadString(it);
                                        string msg_text = ReadString(it);
                                        int32_t pl_size = pl_name.size();
                                        int32_t msg_size = msg_text.size();
                                        int32_t size_str2 = 1+2+4+2+pl_size+2+msg_size;
                                        for(set<int>::iterator itr2 = clients.begin(); itr2!=clients.end(); itr2++)
                                        {
                                                int it2 = *itr2;
                                                WriteInt(it2,size_str2);
 
                                                WriteString(it2,"A");
                                                //send(*it2,"A",1,0);
 
                                                WriteInt(it2,it);
 
 
                                                WriteString(it2,pl_name);
                                                //send(*it2,&pl_size,4,0);
                                                //send(*it2,pl_name.c_str(),pl_size,0);
                                                WriteString(it2,msg_text);
                                                //send(*it2,&msg_size,4,0);
                                                //send(*it2,msg_text.c_str(),msg_size,0);
                                        }
                                }
                        }
                }
        }
        cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
        return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2015, 12:17
Ответы с готовыми решениями:

Есть файл написанный в borland 3.1. Мне его нужно открыть и откомпилировать.
Есть файл написанный в borland 3.1. Мне его нужно открыть и откомпилировать. Но не получается с...

как откомпилировать файл *.сpp????
я тут выкачала програмку с исходниками на С++, в папке только cpp -шные файлы и ехешник. как мне...

Не могу откомпилировать файл cpp!!
Здравстуйте!!! Помогите, пожалуйста, не могу откомпилировать программу в командной строке. Вот...

Как откомпилировать файл программы?
Добрый день. При компиляции базы данных &quot;Библиотека&quot; возникают ошибки в объявлениях (в первых двух...

8
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 5
03.04.2015, 23:37  [ТС] 2
Неужто всем сложно?
0
Don't worry, be happy
17758 / 10526 / 2030
Регистрация: 27.09.2012
Сообщений: 26,502
Записей в блоге: 1
03.04.2015, 23:46 3
Лучший ответ Сообщение было отмечено ProMTik как решение

Решение

держи
sdfsd.zip
Цитата Сообщение от Вывод при сборке
||=== Build: Release in sdfsd (compiler: GNU GCC Compiler) ===|
/home/sasha/cpp/sdfsd/main.cpp||In function ‘std::string ReadString(int)’:|
/home/sasha/cpp/sdfsd/main.cpp|63|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]|
||=== Build finished: 0 error(s), 1 warning(s) (0 minute(s), 1 second(s)) ===|
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 5
03.04.2015, 23:56  [ТС] 4
на винде компелил?
0
Don't worry, be happy
17758 / 10526 / 2030
Регистрация: 27.09.2012
Сообщений: 26,502
Записей в блоге: 1
03.04.2015, 23:58 5
Нет. ubuntu 14.04
0
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 5
04.04.2015, 13:47  [ТС] 6
А не возможности компельнуть на Окнах?

Добавлено через 13 часов 47 минут
Ребята, компельните пожалуйста код на винде, пожалуйста
0
Модератор
Эксперт С++
12069 / 9753 / 5897
Регистрация: 18.12.2011
Сообщений: 26,180
04.04.2015, 15:35 7
В VS 2008 выдается ошибка
test.cpp(10) : fatal error C1083: Не удается открыть файл include: sys/socket.h: No such file or directory
0
Эксперт по математике/физикеЭксперт С++
1989 / 1319 / 379
Регистрация: 16.05.2013
Сообщений: 3,423
Записей в блоге: 6
04.04.2015, 15:53 8
Цитата Сообщение от zss Посмотреть сообщение
В VS 2008 выдается ошибка
В windows в место
C++
1
2
3
#include <sys/socket.h>
#include <netinet/in.h>
#include <fcntl.h>
нужно подключать
C++
1
#include <winsock2.h>
и малось перешаманить код. Подробнее можно посмотреть здесь http://habrahabr.ru/post/105918/.
0
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 5
04.04.2015, 18:04  [ТС] 9
Я оценю твою помощь тут. Мог бы дать свои контакты, чтобы мы на это выделили сразу 2-3 минуты. Тебя не напрягать и я про это забуду.
{deleted} черкани в вк.
 Комментарий модератора 
Нарушение правил форума п. 4.6 Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2015, 18:04
Помогаю со студенческими работами здесь

VS17 откомпилировать отдельный файл?
Собственно как сделать сабж, не создавая для каждого простенького исходника свой проект?

Как откомпилировать проект в exe Файл
Всем добрый вечер. Мне нужно сделать exe - файл своей программы. Чтобы можно было скинуть этот...

Как откомпилировать проект в exe файл
Здравствуйте! В институте задали сделать лабы дома по Дельфи 7, а лекций не каких и не было(( ...

Программно заставить откомпилировать *.pas файл
Нужно чтобы программа, пользуясь каким-либо компилятором после выбора файла (например через...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru