Russian Qt Forum

Qt => Работа с сетью => Тема начата: mr.zhelez от Февраль 26, 2013, 21:08



Название: QTcpSocket write вылетает
Отправлено: mr.zhelez от Февраль 26, 2013, 21:08
У меня есть сервер, который принимает клиентов и каждый работает в отдельном потоке. Приветственное сообщение успешно отправляется. И сообщение от клиентов сервер тоже принимает. Но когда при нажатии на контрол формы вызываю метод, в котором обычный socket->write(...) и ничего более, сервер вылетает. Что за причина может быть? Я проверял, соединение установлено и вообще все в порядке.


Название: Re: QTcpSocket write вылетает
Отправлено: carrygun от Февраль 27, 2013, 05:21
Очевидно же что телепатов тут нет. Нужен код или пример. Что за ошибка? И так далее.


Название: Re: QTcpSocket write вылетает
Отправлено: mr.zhelez от Февраль 27, 2013, 15:40
Очевидно же что телепатов тут нет. Нужен код или пример. Что за ошибка? И так далее.
Ошибки нет никакой, я же говорю, что сервер просто вылетает.
(http://s45.radikal.ru/i109/1302/77/9cdb4964ad66.png)
А код не смогу, большой. Если есть желающие помочь то напишите, я покажу...


Название: Re: QTcpSocket write вылетает
Отправлено: alexis031182 от Февраль 27, 2013, 15:51
Натурально сегфолт на серверной части ловите. А вообще, если уж обращаетесь за помощью в сообщество, готовьтесь к публикации исходников в известной степени. Поверьте, здесь многие собаку съели на сетях (при этом не имею в виду лично себя), поэтому шифроваться смысла особого нет. "Мы - гхуские, не обманываем друг друга" (Брат 2). Ну и конечно, чтобы получить реальную помощь, имеет смысл потрудиться для генерации минимального кода, воспроизводящего проблему.


Название: Re: QTcpSocket write вылетает
Отправлено: xokc от Февраль 27, 2013, 16:55
Ошибки нет никакой, я же говорю, что сервер просто вылетает.
Как-то взаимоисключающее звучит.


Название: Re: QTcpSocket write вылетает
Отправлено: Bepec от Февраль 27, 2013, 17:48
Скорее всего сегфолт происходит из-за несинхронизированных потоков :)

У вас отправка мутексами защищена, или вы просто дёргаете метод объекта?


Название: Re: QTcpSocket write вылетает
Отправлено: mr.zhelez от Февраль 27, 2013, 18:06
Скорее всего сегфолт происходит из-за несинхронизированных потоков :)

У вас отправка мутексами защищена, или вы просто дёргаете метод объекта?
просто дергаю метод объекта. И что за мутексы?


Название: Re: QTcpSocket write вылетает
Отправлено: Bepec от Февраль 27, 2013, 18:45
А как вы думаете, что произойдёт когда два потока дёрнут один объект? :)


Название: Re: QTcpSocket write вылетает
Отправлено: mr.zhelez от Февраль 27, 2013, 19:15
А как вы думаете, что произойдёт когда два потока дёрнут один объект? :)

Так ведь не два же...из главного потока, в котором окно и сервер я дергаю объект класса connection в другом потоке, который для связи с клиентом. Один поток дергает другой :) Ну а если там что то не так, то что вы там про защиту мутексами говорили?


Название: Re: QTcpSocket write вылетает
Отправлено: Bepec от Февраль 27, 2013, 19:19
Ну как бы мутексы блокируют участок кода и дают его выполнять одновременно только одному потоку. Второй в это время будет ждать )

А так советую почитать про межпоточное взаимодействие. Хотя точно ответить без приведения вами кода невозможно. Слишком много "факторов".

PS я сам про взаимодействие потоков понял только после недели мучений.