socket

Mattepuffo's logo
Creare un client WHOIS in Python

Creare un client WHOIS in Python

Oggi vediamo creare un semplice client WHOIS in Python.

Sottolineo semplice perchè interrogheremo solo un server WHOIS, e non faremo particolari controlli su ciò che ha inserito l'utente in input.

Ma può essere un punto di partenza.

Cominciamo col dire che useremo Python 3, ed i moduli sys e socket.

Mattepuffo's logo
Controllare la connessione in Java

Controllare la connessione in Java

Oggi vediamo un modo per controllare che sia disponibile la connessione a internet tramite Java.

Parliamo ovviamente di Java per desktop, non per mobile.

Al contrario della versione per Android, la versione classica di Java non ha strumenti di default per questo tipo di controlli.

Sostanzialmente dobbiamo fare una richiesta ad una pagina web e vedere se risponde; per farlo ci sono vari modi ed io ho usato le Socket.

Avevo provato in altri modi, ma mi dava problemi su alcune piattaforme (Linux nello specifico).

Mattepuffo's logo
Server Socket in C#

Server Socket in C#

Torniamo a parlare di C#; l'argomento riaguarda le Socket, e nello specifico la parte server.

Della parte cliente ne parlerò in altro articolo....

La classe che andremo a creare avrà due metodi: una per la connessione e una per lo spegnimento del server.

Il server sarà in ascolto su una porta specifica (cercate di non usare le porte più comuni tipo la 80 o la 21) ed useremo il protocollo TCP (questo dipende anche dall'uso che ne dovete fare).

Mattepuffo's logo
Windows server socket in C++

Windows server socket in C++

Chiariamo subito che parliamo di Visual C++, quindi il programma userà le librerie di Windows e non sarà usabile su altri sistemi (ho in programma di creare una versione per Linux).

Nello specifico useremo le librerie Winsock.

Iniziamo a creare un progetto in Visual Studio di tipo VC++ console; aggiungete anche le librerie MFC in fase di creazione.

MFC ci servirà per implementare il multi-thread!

Una volta creato il progetto aprite il file stdafx.h e aggiungete queste righe:

#include <WinSock2.h>
#include <conio.h>
using namespace std;

Così facendo avremo disponibile il tutto per tutto il progetto.

Dopo di che creiamo una nuova classe che chiameremo Server.

Nel file di intestazione ci sarà questo:

#pragma once

using namespace std;

class Server {
public:
    Server();
    virtual ~Server();
    UINT initConnection();
    void stopConnection();
private:
    SOCKET server;
    SOCKET inAscolto;
};

In pratica abbiamo aggiunto due funzioni (una per la connessione e una per la disconnessione) e due variabili private.

Fin qui direi nulla di difficile.

Mattepuffo's logo
Invio di file tramite socket in Java (2nd edition)

Invio di file tramite socket in Java (2nd edition)

In questo articolo avevo già parlato di come trasferire file tramite socket in Java.

Il problema però è che funziona solo se sia il client che il server stanno sulla stessa macchina.

Questo perchè ho fatto uso di oggetti File che sono solo una rappresentazione di un file o directory sul pc, ma che non sanno nulla circa il lror contenuto.

Se invece server e client devono stare su macchine diverse bisogna cambiare un pò la logica.

In sostanza il client deve leggere e inviare il file byte per byte; il server legge tutti i byte e li salva sul pc.

Non si può quindi usare File.

Questo è il client:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

private final String HOST = "host";
private final int PORT = 9977;

public static void main(String[] args) {
Client c = new Client();
c.sendFile();
}

private void sendFile() {
try {
Socket socket = new Socket(HOST, PORT);
FileInputStream fis = new FileInputStream("path/to/file");
OutputStream out = socket.getOutputStream();
byte[] buf = new byte[1024];
int read;
while ((read = fis.read(buf)) != -1) {
out.write(buf, 0, read);
}
fis.close();
out.close();
socket.close();
} catch (UnknownHostException ex) {
System.out.println(ex.getMessage());
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}

In pratica usiamo FileInputStream per leggere il contenuto del file, e OutputStream per inviare i byte.