LINUX.ORG.RU

История изменений

Исправление gag, (текущая версия) :

Что это такое?

char buf[80];
//...
while(buf[0]!='G' && buf[1]!='o')
    {
	bytes_read = recvfrom(sock, buf, 1024, 0, NULL, NULL);
    }
Во-первых, чтение неинициализированной переменной buf. Во-вторых, игнорирование bytes_read: после каждого recvfrom нужно передвигаться дальше по buf на bytes_read. Хотя, при успешном получении первого же куска, который начинается с «Go», цикл завершится, даже если сообщение получено не полностью. В-третьих, ты выделил buf'у места всего на 80 байт (включая NULL-терминатор при необходимости), а обещаешь recvfrom, что можно использовать 1024 байта!

Исходная версия gag, :

Что это такое?

char buf[80];
//...
while(buf[0]!='G' && buf[1]!='o')
    {
	bytes_read = recvfrom(sock, buf, 1024, 0, NULL, NULL);
    }
Во-первых, чтение неинициализированной переменной buf. Во-вторых, игнорирование bytes_read: после каждого recvfrom нужно передвигаться дальше по buf на bytes_read. Хотя, при успешном получении первого же куска, который начинается с «Go», цикл завершится, даже если сообщение получено не полностью.