Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Многопоточное подключение к серверу из одной программы / 25 сообщений из 49, страница 1 из 2
22.06.2015, 13:35
    #38989618
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Подключаюсь через сокеты к серверу(127.0.0.1:5555). если одно подключение с одного клиента то работает, по одному подключению с двух клиентов тоже работает. и отправляется сообщение на сервер.
а теперь хочу сделать несколько соединений с одной программы
подключение прописано в функции init
Код: plaintext
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.
//---------------client_net

int my_client_net::init(char *ip, int port){

printf("my_client_net init(%s,%i)...\n",ip,port);
WSADATA WsaData;	
int res=0;
if (WSAStartup( MAKEWORD(2,2), &WsaData ) == NO_ERROR){
	int opt = TRUE;
	int iResult=0;
	printf("my_client_net WSAStartup success\n");
	if( (serv_socket = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP)) == 0) 
	{
		printf("socket failed");
		res=-1;
	}
	if(res==0){
		//set master socket to allow multiple connections , this is just a good habit, it will work without this
		if( setsockopt(serv_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&opt, sizeof(opt)) < 0 )
		{
			printf("setsockopt failed");
			res=-1;
		}
	}
	
	if(res==0){
		int flag = 1;
		iResult = setsockopt(serv_socket,      // socket affected 
								IPPROTO_TCP,     // set option at TCP level 
								TCP_NODELAY,     // name of option 
								(char *) &flag,  // the cast is historical cruft 
								sizeof(int));    // length of option value 
		if (iResult < 0)
		{
			printf("set TCP_NODELAY ERROR\n");
			res=-1;
		}
	}
	if(res==0){
		memset(&address, 0, sizeof(address));
		address.sin_family = AF_INET;
		address.sin_addr.s_addr = inet_addr( ip );//INADDR_ANY;
		address.sin_port = htons( port );
		if(connect(serv_socket, (struct sockaddr *)&address, sizeof(struct sockaddr))<0){
			printf("can't connect\n");
			//printf("send() failed with error: %d\n", WSAGetLastError());
			res=-1;
		}
		
	}
	
}
else{
	printf("my_client_net failed WSAStartup\n");
	res=-1;
}

return res;
}



Само подключение
Код: plaintext
1.
2.
3.
4.
5.
6.
my_client_net client[CL_COUNT];
for(int i=0;i<CL_COUNT;i++){
		Sleep(10);
		client[i].clear();
		res[i]=client[i].init(SERVER_IP,5555);
		}



но тут подключение происходит а затем сразу отключается. и при этом ниче не успевает отправится.
...
Рейтинг: 0 / 0
22.06.2015, 13:48
    #38989637
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Наверно из-за того что WsaData у тебя локальная переменная, которая посте отработки init() становится мусором и затирается другими данными.

И WSAStartup() надо однократно вызывать, а не перед каждым соединением.
...
Рейтинг: 0 / 0
22.06.2015, 13:49
    #38989640
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежникно тут подключение происходит а затем сразу отключается. и при этом ниче не успевает отправится.

Тут у тебя совсем нет потоков, как это будет работать -- не очень понятно. Ну, допустим, как-то будет.

Отключает скорее всего сервер, скорее всего он работает по какому-то протоколу уровня приложения поверх TCP, типа POP3 или HTTO, и сервер ждёт, чтобы клиент послал что-то по этому протоколу, инициировал сессию как-то, а этого не происходит,
и, немного подождав, сервер закрывает соединние.

Может быть это и не так в реальности, но по крайней мере ты должен думать, что у тебя происходит и на стороне сервера тоже, а про это ты вообще молчишь.
Если хочешь тестировать только клиента, подключай его к хрестоматийному tcp echo server например (код которого найти можно легоко в сети, и собрать под свою платформу), или аналогичному тестовому TCP-серверу, и проверяй так клиента,
а потом уже будешь подключаться куда-то к другому серверу.
...
Рейтинг: 0 / 0
22.06.2015, 13:51
    #38989643
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Dima TНаверно из-за того что WsaData у тебя локальная переменная, которая посте отработки init() становится мусором и затирается другими данными.

И WSAStartup() надо однократно вызывать, а не перед каждым соединением.

Ну это -- фишки WinSocks, я в этом не понимаю ничего, но если так, то легко исправить -- перенести эту переменную в класс.
...
Рейтинг: 0 / 0
22.06.2015, 13:54
    #38989650
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
MasterZivчто у тебя происходит и на стороне сервера тоже, а про это ты вообще молчишь.
Если хочешь тестировать только клиента, подключай его к хрестоматийному tcp echo server например (код которого найти можно легоко в сети, и собрать под свою платформу), или аналогичному тестовому TCP-серверу, и проверяй так клиента,
а потом уже будешь подключаться куда-то к другому серверу.

сервер не мой. в чужом коде кавыряться не хотелось бы. просто получается если две программы-клиента запустить (у каждого по одному клиенту) то работает. а если одну с двумя клиентами то не работает
...
Рейтинг: 0 / 0
22.06.2015, 14:02
    #38989655
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежникпри этом ниче не успевает отправится.
Так ты код отправки забыл написать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.06.2015, 14:04
    #38989659
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежникесли одну с двумя клиентами то не работает
"не работает" понятие растяжимое. Ошибки надо смотреть и анализировать. Что возвращает WSAGetLastError() и в какой момент?

PS Про WsaData я похоже напутал, почитал, как понимаю там просто инфа о версии либы WSA
...
Рейтинг: 0 / 0
22.06.2015, 14:18
    #38989676
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Dima T,

сделал теперь работает у меня просто в client[i].clear(); вот такой код

Код: plaintext
1.
2.
3.
4.
void my_client_net::clear(){
printf("my_client_net clear...\n");
WSACleanup();
}



исправил. теперь работает. теперь делаю так запускаю цикл и отправляю с 10 по 100 клиентов с одной проги бесконечные сообщения с задержкой 1мс. серверпринимает около 15000 а затем падает. при отправке сообщений с одного клиента тоже падал после 11000-15000 сообщений
...
Рейтинг: 0 / 0
22.06.2015, 14:38
    #38989709
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежниксерверпринимает около 15000 а затем падает
Удачный эксплоит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.06.2015, 14:47
    #38989728
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
WSACleanup() надо вызывать после WSAStartup(), а так у тебя получилось что ты инициализировал WSA, установил соединение и перед следующим закрыл все что связано с сетью, в т.ч. ранее открытые соединения.

Вынеси WSAStartup() и WSACleanup() в main(), вызывай их там один раз.

Картежниксерверпринимает около 15000 а затем падает. при отправке сообщений с одного клиента тоже падал после 11000-15000 сообщений
Это уже к разработчику сервера. Чего-то он там накосячил.
...
Рейтинг: 0 / 0
22.06.2015, 14:58
    #38989750
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Dima TЭто уже к разработчику сервера. Чего-то он там накосячил.
нет это мой косяк.
сервер принимает все, если один клиент отключился, и заново запустить он примет еще 15000

отправляю сообщения Hello World, сервер принимает 15000
оптравляю Hello сервер принмиает в несколько раз(вроде в два раза) больше
вот код как у меня создаются сообщения

Код: plaintext
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.
byte msg[1024];
int my_client_net::sendvector(){
	int res=0;
	int len=0;
	int msglen=sendmess.size();
	//int m=msglen;
	//printf("sending... %s %d",msg,msglen);
	//printf("sending %d bytes...",msglen);
	//byte *msg=new byte(msglen);
	for(int i=0;i<msglen;i++){
		msg[i]=sendmess[i];
	}
	msg[msglen]=0;
	while (msglen>0){
		len=send(serv_socket,(char*)msg,msglen,0);
		if(msglen!=len) printf("> send part");
		if(len>0){
			msglen-=len;
			for(int i=0;i<msglen;i++){
				msg[i]=msg[i+len];
			}
		}
		else{
			printf("send() failed with error: %d\n", WSAGetLastError());
			msglen=0;
			disconnect();
		}
			
		
	}
	//delete [] msg;
	//printf("/ %d bytes sended \n",m);
	//printf("/ %s %d bytes sended\n",msg,m);
	return res;
	
}

//здесь создается сообщение по определенному протоколу все закидывается в vector
// на него я и думаю. может он память забивает
int my_client_net::send_msg_to(string msg,int id){
		sendmess.clear(); // здесь стоит очистка вектора может она как то не так очищает 
		sendmess.push_back(245);
		sendmess.push_back(25);
		short l=(short)msg.length();
		write_short(l+10);		
		write_int(id);
		for(int i=0;i<msg.length();i++){
			sendmess.push_back((byte)msg.c_str()[i]);
		}
		sendmess.push_back(0);
		sendmess.push_back(0);
		sendvector();
	return 0;
}



Здесь вызывается функция для создания сообщения и отправки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
while(b){
		Sleep(1);
		//b=false;
		for(int i=0;i<CL_COUNT;i++){
			if(res[i]==0){
				if(client[i].isconnected()){
				b=true;
						uid++;
						/*if(uid>105000){
							//printf("send() failed with error:%d %d\n", WSAGetLastError(),uid);
						}*/
					client[i].send_msg_to("HELLO!",uid);
				}
			}
		}
	}
...
Рейтинг: 0 / 0
22.06.2015, 15:12
    #38989769
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
КартежникDima TЭто уже к разработчику сервера. Чего-то он там накосячил.
нет это мой косяк.
сервер принимает все, если один клиент отключился, и заново запустить он примет еще 15000

отправляю сообщения Hello World, сервер принимает 15000
оптравляю Hello сервер принмиает в несколько раз(вроде в два раза) больше

...
А ответы принимать кто будет? У тебя в цикле только отправка, приема нет.
Скорее всего сервер забил у себя буфер отправки и у тебя буфер приема ответами на твое Hello, видит что ты обратно ничего не принимаешь и рвет соединение или отвечать перестает.

Для проверки попробуй буфер приема увеличить
Код: plaintext
1.
2.
3.
4.
	int size = 15000000;
	if (setsockopt(serv_socket, SOL_SOCKET, SO_RCVBUF, (char *) &size, sizeof(size)) != 0 ) {
		printf("setsockopt SO_RCVBUF failed\n");
	}
...
Рейтинг: 0 / 0
22.06.2015, 15:18
    #38989777
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежникнет это мой косяк.
Падает твоё приложение или сервер? Кто падает - того и косяк.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.06.2015, 16:26
    #38989872
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
ТС, и тем не менее, мой совет про отладку клиента на tcp echo server я бы оставил в силе.
...
Рейтинг: 0 / 0
22.06.2015, 17:14
    #38989933
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
MasterZiv,

мое приложение падает. перестает отправлять. а сервер дальше может принимать сообщения от других клиентов.
отправку ответа от сервера отключил.
...
Рейтинг: 0 / 0
22.06.2015, 17:17
    #38989936
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
сервер и клиент на данный момент находятся на одном компе
...
Рейтинг: 0 / 0
22.06.2015, 17:19
    #38989941
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
как насчет того что кол-во отправляемых сообщений зависит от размера сообщения. как я говорил выше, hello world 15000, hello больше где то в 2 раза забыл. запомнить. помню что было больше
...
Рейтинг: 0 / 0
22.06.2015, 17:21
    #38989943
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежникмое приложение падает. перестает отправлять.
"падает" это что? Вылетает? Ошибку выдает? Какую ошибку? В каком месте? Тут телепатов нет, пиши подробнее.
...
Рейтинг: 0 / 0
22.06.2015, 17:25
    #38989945
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Dima TКартежникмое приложение падает. перестает отправлять.
"падает" это что? Вылетает? Ошибку выдает? Какую ошибку? В каком месте? Тут телепатов нет, пиши подробнее.
падает это перестает отправлять. ошибок никаких не выдает. даже соединения не отключаются.
...
Рейтинг: 0 / 0
22.06.2015, 17:26
    #38989947
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежник,

так давай весь код, целиком, как он сейчас есть.
Надеюсь, что всё, о чем уже сказали, ты уже исправил.
...
Рейтинг: 0 / 0
22.06.2015, 17:29
    #38989951
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
По мне так весь приведённый код -- хрень какая-то. Ничего не понятно, куски какие-то, а не код, и все как-то очень странно.
...
Рейтинг: 0 / 0
22.06.2015, 17:29
    #38989952
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
забыл сказать. до этого когда была отправка ответа от сервера, тогда клиент отправлял 15000 и падал и отключалось соединение.
сейчас отключил отправку ответа. и клиент отправляет не 15000, а 10500 при Hello World! и 144000 при Hello!
...
Рейтинг: 0 / 0
22.06.2015, 17:33
    #38989960
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Код: plaintext
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.
class my_client_net{
public:
	vector <byte> sendmess;
	int serv_socket;
	int buffer_size;
	char buffer[MAX_BUF_SIZE];
	string appPath;
	my_packet packet;
	struct sockaddr_in address;
	void clear();
	int init(char *ip, int port);
	bool isconnected(){
		bool res=false;
		if(serv_socket>0)res=true;
		return res;
	}
	void disconnect();
	my_client_net(void);
	virtual ~my_client_net(void);
	int sendmsg(/*const char *buf,int buflen*/);
	int sendmessage(char * msg,int msglen);
	int sendbytes(byte * msg,int msglen);
	int sendvector();
	int getmessage();
	int parse();
	int sendfile(string fname,string fullname);
	int senddir(string dname,string curdir="");
	void sendshortname(string shortname);
	void remove(int n){
		buffer_size-=n;
		for(int i=0;i<buffer_size;i++){
			buffer[i]=buffer[i+n];
		}
	}
	int begin_write(){
		sendmess.clear();
		return 0;
	}
	int write_byte(byte b){
		sendmess.push_back(b);
		return 0;	
	}
	int write_short(short b){
		byte bb[2];
		for (int i =0; i <2; i++){
         bb[i] = (b >> (i * 8));
		}
		//for(int i=1;i>=0;i--)
		for(int i=0;i<2;i++)
		 sendmess.push_back(bb[i]);
		
		return 0;
	}
	int write_int(int b){
		byte bb[4];
		for (int i =0; i <4; i++){
         bb[i] = (b >> (i * 8));
		}
		//for(int i=3;i>=0;i--)
		for(int i=0;i<4;i++)
		 sendmess.push_back(bb[i]);
		
		return 0;
	}
	int send_msg_to(string msg,int id);
};



Код: plaintext
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.
int my_client_net::init(char *ip, int port){

printf("my_client_net init(%s,%i)...\n",ip,port);
WSADATA WsaData;	
	int res=0;
	if (WSAStartup( MAKEWORD(2,2), &WsaData ) == NO_ERROR){
	int opt = TRUE;
	int iResult=0;
	printf("my_client_net WSAStartup success\n");
	if( (serv_socket = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP)) == 0) 
	{
		printf("socket failed");
		res=-1;
	}
	if(res==0){
		//set master socket to allow multiple connections , this is just a good habit, it will work without this
		if( setsockopt(serv_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&opt, sizeof(opt)) < 0 )
		{
			printf("setsockopt failed");
			res=-1;
		}
	}
	
	if(res==0){
		int flag = 1;
		iResult = setsockopt(serv_socket,      // socket affected 
								IPPROTO_TCP,     // set option at TCP level 
								TCP_NODELAY,     // name of option 
								(char *) &flag,  // the cast is historical cruft 
								sizeof(int));    // length of option value 
		if (iResult < 0)
		{
			printf("set TCP_NODELAY ERROR\n");
			res=-1;
		}
	}
	if(res==0){
		memset(&address, 0, sizeof(address));
		address.sin_family = AF_INET;
		address.sin_addr.s_addr = inet_addr( ip );//INADDR_ANY;
		address.sin_port = htons( port );
		if(connect(serv_socket, (struct sockaddr *)&address, sizeof(struct sockaddr))<0){
			printf("can't connect\n");
			//printf("send() failed with error: %d\n", WSAGetLastError());
			res=-1;
		}
		
	}
	
	}
	else{
		printf("my_client_net failed WSAStartup\n");
		res=-1;
	}

return res;
}



void my_client_net::clear(){
printf("my_client_net clear...\n");
WSACleanup();
}

void my_client_net::disconnect(){
closesocket(serv_socket);
serv_socket=-1;
//clear();
}



byte msg[1024];
int my_client_net::sendvector(){
	int res=0;
	int len=0;
	int msglen=sendmess.size();
	//int m=msglen;
	//printf("sending... %s %d",msg,msglen);
	//printf("sending %d bytes...",msglen);
	//byte *msg=new byte(msglen);
	for(int i=0;i<msglen;i++){
		msg[i]=sendmess[i];
	}
	msg[msglen]=0;
	//while (msglen>0){
		len=send(serv_socket,(char*)msg,msglen,0);
		if(msglen!=len) printf("> send part");
		if(len>0){
		/*	msglen-=len;
			for(int i=0;i<msglen;i++){
				msg[i]=msg[i+len];
			}*/
		}
		else{
			printf("send() failed with error: %d\n", WSAGetLastError());
			msglen=0;
			disconnect();
		}
			
		
	//}
	//delete [] msg;
	//printf("/ %d bytes sended \n",m);
	//printf("/ %s %d bytes sended\n",msg,m);
	return res;
	
}

int my_client_net::send_msg_to(string msg,int id){
		sendmess.clear();
		sendmess.push_back(245);
		sendmess.push_back(25);
		short l=(short)msg.length();
		write_short(l+10);
		
		write_int(id);
		for(int i=0;i<msg.length();i++){
			sendmess.push_back((byte)msg.c_str()[i]);
		}
		sendmess.push_back(0);
		sendmess.push_back(0);
		sendvector();
	return 0;
}





Код: plaintext
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.
#include "stdafx.h"
#define CL_COUNT 99
my_client_net client[CL_COUNT];

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_CTYPE, "rus");
	int result=0;
	int res[CL_COUNT];
	
	client[0].clear();
	for(int i=0;i<CL_COUNT;i++){
		Sleep(1);
		
		res[i]=client[i].init(SERVER_IP,5555);
		}
	bool b=true;
	int uid=0;
	string pl="PLAYER1",msg="HELLO";
					
	while(b){
		Sleep(1);
		//b=false;
		for(int i=0;i<CL_COUNT;i++){
			if(res[i]==0){
				if(client[i].isconnected()){
				b=true;
						uid++;
						/*if(uid>105000){
							//printf("send() failed with error:%d %d\n", WSAGetLastError(),uid);
						}*/
					client[i].send_msg_to("HELLO!",uid);
				}
			}
		}
	}

	for(int i=0;i<CL_COUNT;i++){
		client[i].disconnect();
	}
	client[0].clear();
	//b=false;
		
	
	
	
	
	return 0;
}
...
Рейтинг: 0 / 0
22.06.2015, 18:14
    #38990006
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
Картежник клиент отправлял 15000 и падал и отключалось соединение

15000 -- это что ?
...
Рейтинг: 0 / 0
22.06.2015, 18:15
    #38990007
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопоточное подключение к серверу из одной программы
MasterZivКартежник клиент отправлял 15000 и падал и отключалось соединение

15000 -- это что ?
15000 сообщений
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Многопоточное подключение к серверу из одной программы / 25 сообщений из 49, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]