2015-01-30 2 views
-1

Я изучаю InfoSec и 4 недели назад нам нужно было запрограммировать небольшой инструмент, который мог бы общаться между двумя ПК через tcp. Сейчас у меня праздники, и я хочу использовать время для создания этой маленькой вещи в чате.Нитки в C; Tcp Chat Programm

Я уверен, что мне нужна Тема для этого, так как мне нужно слушать Incomming сообщения всего времени и recvfrom блоки мне отправлять сообщения во время ожидания нового сообщения.

Итак, мои мысли, где мне нужно 2 отдельных тем, которые прослушивают и посылают, поэтому у меня есть это «чувство в реальном времени».

Я уже прочитал эти 3 статьи The Geek Stuff Thread Tutorial, но это никуда не достает. У меня проблемы с поиском хороших объяснений по этому вопросу , и я действительно хочу сделать это самостоятельно, потому что я очень рад, что на самом деле производит что-то полезное в первый раз.

Вы, ребята, знаете какие-либо хорошие ссылки на C-Tutorials для этого? И, извините за мой плохой английский, я действительно устал в данный момент.

Редактировать: Я только что увидел, что это считается не по теме, чтобы просить здесь ресурсы сайта.

Конкретная проблема, с которой я сталкиваюсь в данный момент, заключается в том, что я не знаю, как реализовать поток, который ничего не делает, кроме вызова recvfrom и размещения полученного сообщения в std.out и продолжения прослушивания. У меня уже есть этот код:

while(loop){ 
     /* ~~ RECVFROM ~~ */ 
     printf(YELLOW"@"COLOR_RESET"Waiting for Client-Message!\n"); 
     sizer = recvfrom(udpsocket,msg,512,0,(struct sockaddr*) &destaddr,&addrsize); 
     if(sizer==-1){ 
       perror("recvfrom"); 
       return 0; 
     }else{ 
       printf(GREEN">%s\n"COLOR_RESET,msg); 
     } 
     /* ~~ ~~~~~~~~ ~~*/ 
    if((*(msg)=='-')&&(*(msg+1)=='x')){ 
     loop=0; 
    } 
    memset(msg,'\0',512); 
} 

И мне нужна помощь положить его в тему я могу задачи поиска все остальное, я просто нужна помощь по началу работы там.

Спасибо вам заранее!

+0

Я считаю, что вы можете избежать использования потоков с соответствующим использованием select(). Если у вас есть kqueue(), еще лучше. Тем не менее, потоки, вероятно, являются естественным механизмом для использования. –

+0

посмотреть pthread_create() –

ответ

0

Вот a complete manual! Если вам действительно нужно использовать поток, я надеюсь, что это поможет, как и для меня.