Я изучаю 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);
}
И мне нужна помощь положить его в тему я могу задачи поиска все остальное, я просто нужна помощь по началу работы там.
Спасибо вам заранее!
Я считаю, что вы можете избежать использования потоков с соответствующим использованием select(). Если у вас есть kqueue(), еще лучше. Тем не менее, потоки, вероятно, являются естественным механизмом для использования. –
посмотреть pthread_create() –