Hay dos enchufes conectados. ¿Cómo puedo interconectarlos?¿Cómo puedo "interconectar" dos enchufes en Linux?
- Los datos aparecidos en un socket deben escribirse en el otro.
- EOF/FIN debe propocionarse bien. Si uno está medio cerrado, el otro también debe estar medio cerrado.
int client = get_connected_client_socket(); int proxy = get_connected_proxy_socket(); negotiate_with_proxy(proxy); iterconnect(client, proxy); // Now forgot about both client and proxy. // System should handle IO/shutdown/close. // Ideally even without any support of the user-space process.
Puede Linux hacerlo? ¿Se puede hacer engañando el seguimiento de la conexión para cambiar el estado de seguimiento de la conexión existente?
@related Determine how much can I write into a filehandle; copying data from one FH to the other
No, no tenía conocimiento de 'empalme' (solo teóricamente sabía sobre' sendfile'). Lo pensaré y lo probaré. –
socket -> pipe -> socket 'splice' chain funciona. –
@Vi .: ¿Supongo que usabas sockets TCP? Parece que este enfoque no funcionará para sockets UDP? –