Articles of socket

Qual è la differenza tra BeginConnect e ConnectAsync?

Qual è la differenza tra BeginConnect e ConnectAsync ? Successivamente, qual è la differenza tra BeginDisconnect e DisconnectAsync ? La documentazione ConnectAsync afferma: “Inizia una richiesta asincrona per una connessione host remota.” La documentazione BeginConnect afferma inoltre : “Inizia una richiesta asincrona per una connessione host remota.” Sia DisconnectAsync che BeginDisconnect anche la stessa cosa: […]

Specificando UDP si riceve la dimensione del buffer in fase di runtime in Linux

In Linux, è ansible specificare la dimensione del buffer di ricezione predefinita del sistema per i pacchetti di rete, ad esempio UDP, utilizzando i seguenti comandi: sysctl -w net.core.rmem_max= sysctl -w net.core.rmem_default= Ma mi chiedo, è ansible che un’applicazione (ad esempio, in c ) sovrascriva i valori predefiniti del sistema specificando la dimensione del buffer […]

NetworkStream.ReadAsync con un token di cancellazione non annulla mai

Ecco la prova. Qualche idea di cosa c’è di sbagliato in questo codice? [TestMethod] public void TestTest() { var tcp = new TcpClient() { ReceiveTimeout = 5000, SendTimeout = 20000 }; tcp.Connect(IPAddress.Parse(“176.31.100.115”), 25); bool ok = Read(tcp.GetStream()).Wait(30000); Assert.IsTrue(ok); } async Task Read(NetworkStream stream) { using (var cancellationTokenSource = new CancellationTokenSource(5000)) { int receivedCount; try { […]

scritture java socket / output stream: bloccano?

Se scrivo solo su un socket su un stream di output, bloccherà mai? Solo le letture possono bloccare, giusto? Qualcuno mi ha detto che le scritture possono bloccare, ma vedo solo una funzione di timeout per il metodo di lettura di un socket – Socket.setSoTimeout() . Non ha senso per me che una scrittura possa […]

Come gestire OpenSSL SSL_ERROR_WANT_READ / WANT_WRITE su socket non bloccanti

La libreria OpenSSL consente di leggere da un socket sottostante con SSL_read e scrivere su SSL_write. Queste funzioni possono essere restituite con SSL_ERROR_WANT_READ o SSL_ERROR_WANT_WRITE a seconda delle esigenze del protocollo ssl (ad esempio quando si rinegozia una connessione). Non capisco davvero cosa l’API voglia che faccia con questi risultati. L’imaging di un’app server che […]

Numero massimo di connessioni simultanee su una singola porta (socket) del server

Quale potrebbe essere il numero massimo di client concorrenti (utilizzando un numero di porta diverso) che potrebbero comunicare a un server sulla stessa porta (socket singolo)? Quali sono i fattori che potrebbero influenzare questo conteggio? Sto cercando queste informazioni su telnet in ambiente Linux.

getterò attorno a sockaddr_storage e sockaddr_in interromperà il rigoroso aliasing

Seguendo la mia domanda precedente, sono davvero curioso di questo codice – case AF_INET: { struct sockaddr_in * tmp = reinterpret_cast (&addrStruct); tmp->sin_family = AF_INET; tmp->sin_port = htons(port); inet_pton(AF_INET, addr, tmp->sin_addr); } break; Prima di fare questa domanda, ho cercato su SO lo stesso argomento e ho avuto risposte miste su questo argomento. Ad esempio, […]

Marshal.PtrToStructure (e ritorno) e soluzione generica per lo scambio di endianness

Ho un sistema in cui un agente remoto invia strutture serializzate (da un sistema C incorporato) da leggere e archiviare tramite IP / UDP. In alcuni casi ho bisogno di inviare gli stessi tipi di struttura. Ho pensato di avere un buon setup usando Marshal.PtrToStructure (receive) e Marshal.StructureToPtr (send). Tuttavia, un piccolo trucchetto è che […]

Quanto sono lenti i socket TCP rispetto alle pipe denominate su Windows per localhost IPC?

Sto sviluppando un proxy TCP da mettere di fronte a un servizio TCP che dovrebbe gestire tra 500 e 1000 connessioni attive da Internet selvaggio. Il proxy è in esecuzione sulla stessa macchina del servizio ed è per lo più trasparente. Il servizio è per la maggior parte inconsapevole del proxy, con l’unica eccezione della […]

close () non chiude correttamente il socket

Ho un server multi-thread (pool di thread) che gestisce un numero elevato di richieste (fino a 500 / sec per un nodo), utilizzando 20 thread. C’è un thread listener che accetta le connessioni in entrata e le accoda per l’elaborazione dei thread del gestore. Una volta che la risposta è pronta, i thread scrivono al […]