Cristian Опубликовано 7 ноября, 2010 Жалоба Поделиться Опубликовано 7 ноября, 2010 Дали задание сделать чат на Си/С++ с помощью Winsock2.h, искал в инете, там ничего понятного не нашел, ибо никогда раньше не работал с этим. Может кто дать пример простейшего чата, чтобы все было понятно.. Или ссылки на такие примеры ))) Заранее благодарю! Ссылка на комментарий
Tymvie Опубликовано 7 ноября, 2010 Жалоба Поделиться Опубликовано 7 ноября, 2010 http://moosader.deviantart.com/art/C-Winsock-Sample-Program-97696619 Ссылка на комментарий
ТопоРУС Опубликовано 7 ноября, 2010 Жалоба Поделиться Опубликовано 7 ноября, 2010 Делал курсовую на похожую тему. Надо было перемножить матрицу распределённым методом. Два компа подцеплял. Делал на визуале. Вот здесь очень хорошо написано: http://www.helloworld.ru/texts/comp/lang/visualc/vc2/16.htm Если что, можешь и в асю стукнуть, я рпз свой кину. Ссылка на комментарий
Cristian Опубликовано 8 ноября, 2010 Автор Жалоба Поделиться Опубликовано 8 ноября, 2010 Спасибо, попробую разобраться! Надеюсь смогу ) Ссылка на комментарий
Cristian Опубликовано 20 ноября, 2010 Автор Жалоба Поделиться Опубликовано 20 ноября, 2010 собственно чат сделал, вот листинг (пока консольный):#include #include #include #include #include #pragma hdrstop#pragma argsusedSOCKET s,s1;int err;WSADATA WsaData;SOCKADDR_IN ss;//---------------------------------------------------------------------------void ser(){int p;printf("Vvedite Port:");scanf("%i",&p);ss.sin_family=AF_INET;ss.sin_port=htons(p);ss.sin_addr.s_addr=INADDR_ANY;err=bind(s,(LPSOCKADDR)&ss,sizeof(ss));if(err==-1) printf("2) Bind Error.\n");else printf("2)Bind GoodLuck.\n");err=listen(s,SOMAXCONN);if(err!=0) printf("2) Listen Error.\n");else printf("2)Listen GoodLuck.\n");SOCKADDR_IN from;int fromlen=sizeof(from);s1=accept(s,(struct sockaddr*)&from,&fromlen);printf("Accepted connection from %s, port %d\n", inet_ntoa(from.sin_addr), htons(from.sin_port)) ;char A[50];while(recv(s1,A,sizeof(A),0)!=SOCKET_ERROR){printf("%s",A);scanf("%s",&A);send(s1,A,sizeof(A),MSG_DONTROUTE);}}//----------------------------------------------void cl(){int p;printf("Vvedite Port:");scanf("%i",&p);ss.sin_family=AF_INET;ss.sin_port=htons(p);ss.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");err=connect(s,(struct sockaddr*)&ss,sizeof(ss));if(err==0) printf("Connecting good.\n");else printf("Error Connecting.\n");char A[50];send(s,"Marusya!!!",sizeof("Marusya!!!"),MSG_DONTROUTE);while(recv(s,A,sizeof(A),0)!=SOCKET_ERROR){printf("%s",A);scanf("%s",&A);send(s,A,sizeof(A),MSG_DONTROUTE);}}//----------------------------------------------void main(){int a=0;err=WSAStartup(0x0101, &WsaData);if(err==SOCKET_ERROR) printf("1) Wsa Error.\n");else printf("1)Wsa GoodLuck.\n");s=socket(AF_INET,SOCK_STREAM,0);if(s==-1) printf("2) Socket Error.\n");else printf("2)Socket GoodLuck. #%i\n",s);dot1:printf("Server(1) || Client(2) || Exit (3..):");scanf("%i",&a);switch(a){case 1:ser();goto dot1;break;case 2:cl();goto dot1;break;default: printf("The End.\n");break;}system("pause");}//--------------------------------------------------------------------------- Остался вопрос, как сделать чтобы сообщения приходили как в обычном чате, эм... асинхронно наверно) И как сделать многопользовательский режим ? Если кто может поделиться опытом, буду очень признателей ) Ну или парой ссылочек полезных !) Ссылка на комментарий
ToNY667 Опубликовано 21 ноября, 2010 Жалоба Поделиться Опубликовано 21 ноября, 2010 Cristian, ТопоРУС уехал на неделю в Барнаул, так что его помощь только через неделю... Ссылка на комментарий
Cristian Опубликовано 21 ноября, 2010 Автор Жалоба Поделиться Опубликовано 21 ноября, 2010 Я думаю он не единственный программист на форуме.... надеюсь ) Ссылка на комментарий
TolkienDRR Опубликовано 24 ноября, 2010 Жалоба Поделиться Опубликовано 24 ноября, 2010 UDP юзать и будет все ок. Засоришь немного сеть, зато в целом локальный чат будет работать шустрее =) Ссылка на комментарий
Cristian Опубликовано 24 ноября, 2010 Автор Жалоба Поделиться Опубликовано 24 ноября, 2010 Думается мне, что такой чат, асинхронный, можно сделать с помощью потоков, в Linux есть и функции потоковые, но в винде я не о чем таком не слышал, и не нашел... Как в винде работать с потоками, подскажет кто ?TolkienDRRТоесть с помощью UDP, можно сделать асинхронную передачу сообщений ? Ссылка на комментарий
JSTQ Опубликовано 24 ноября, 2010 Жалоба Поделиться Опубликовано 24 ноября, 2010 file - new - other - thread objectпотом скопируй нужное из новой h-ки и *.cpp файлов в основной *.h и *.cpp чтобы не было проблем с переменными и удали их из проектаи вообще в инете много норм статей про потоки Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти