Pracuję nad aplikacją klient/serwer Ruby TCP, używając GServer i TCPSocket. Wpadłem na problem, którego nie rozumiem. Mój klient TCPSocket pomyślnie łączy się z moim urządzeniem GServer, ale mogę wysyłać dane tylko za pomocą putów. Połączenia z TCPSocket.send lub TCPSocket.write nie powodują żadnych problemów. Czy jest jakaś magia, której mi brakuje?Ruby TCPSocket write nie działa, ale działa?
tcp_client = TCPSocket.new(ipaddr, port)
tcp_client.puts('Z') # -> GServer receives "Z\n"
Ale jeśli mogę użyć zapisu lub wysłać ...
tcp_client = TCPSocket.new(ipaddr, port)
tcp_client.write('Z') # -> nothing is received
tcp_client.send('Z') # -> nothing is received
Dzięki za pomoc
Dodatkowe informacje:
- zachowanie jest takie samo na Linuksie & systemu Windows .
- Płukanie gniazda po zapisie nie zmienia zachowania.
Myślałem, że użyłem recvfrom po stronie serwera, ale okazało się, że używałem gets, który szuka znaku nowej linii. – nathan