Hi all,
Quick thanks to Alex for helping me get started a couple weeks ago. I'm trying to port/rewrite a C++ program I wrote to Genode and am running into a networking issue. The program is a server and accepts TCP connections from clients that do not wait for a response. I'm sending my data via a python 3.7 script that works with the Linux native version of the application and is essentially:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('127.0.0.1', 5555)) sock.sendall(b"test\r\n") sock.close()
Basically, I've been unable to read from my listen sockets. I'm able to bind, listen for connections, accept an incoming connection, and call socket read(), but then it just hangs. I saw something in the 18.08 release notes that made me think LwIP might only support asynchronous mode, so I tried nonblocking sockets. Those no longer hang, but they also don't read any data. Next, I tried using tcp_terminal and modifying the tcp_terminal_echo program to fit my needs. This program also can't read any of the data I send it. It accepts the incoming connection, but never logs that any bytes are read. However, TCP terminal does accept telnet connections like in the example program. I then discovered that my synchronous socket reading would actually work for a telnet connection as well.
Any idea what is going on here? For reference, my run script is essentially the same as tcp_terminal.run. Failing that, does anyone know what I would need to do to modify tcp_terminal/tcp_terminal_echo to make it accept regular tcp socket connections and not just telnet? Thanks so much!
-Connor