Mam problem z komunikacją po TCP.
Próbuję napisać klienta MPC (Music Player Daemon) na Raspberry Pi, który w zamyśle ma wyświetlać kilka informacji na LCD. Zanim jednak przejdę do parsowania danych i sterowania wyświetlaczem, muszę sprawić, że popłyną dane. Z samym zainicjowaniem połączenia nie ma problemu. Program tworzy socketa i nawiązuje połączenie. Udaje mi się wysłać też pierwszą wiadomość. Potem zaczynają się dziać dziwne rzeczy...
Program powstał na bazie jakiegoś przykładu z Internetu. Kłopotliwy fragment wygląda następująco:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Efekt działania programu wygląda następująco:
Kod:
Client-socket() OK
Connection established...
Sending command currentsong
to the server localhost...
Client-write() is OK
String successfully sent lol!
Waiting the localhost to echo back...
1 bytes received
OK MPD 0.16.0
file: Janis Jop
1 bytes received
lin - 18 essential songs/18-M
1 bytes received
e And Bobby McGee.mp3
Last-Mo
1 bytes received
dified: 2006-03-23T09:55:41Z
1 bytes received
Time: 237
Artist: Janis Jopli
1 bytes received
n
Title: Me And Bobby McGee
A
1 bytes received
lbum: 18 essential songs
Trac
1 bytes received
k: 18/18
Genre: Psychedelic R
1 bytes received
ock
Pos: 37
Id: 37
OK
delic R
Potem nie dzieje się kompletnie nic. Nie wywala błędu, nie wychodzi z programu - po prostu kursor stoi w miejscu, a żadne dane nie napływają, chociaż teoretycznie program po odebraniu i wyświetleniu wszystkich przychodzących danych powinien wysłać kolejnego requesta i zacząć cały proces od nowa. Wygląda to tak, że zawieszenie działania następuje gdzieś w trakcie wykonywania tego fragmentu:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Nigdy nie dochodzi do wyświetlenia wiadomości "koniec odbioru".
Ktoś ma jakiś pomysł?