# net

***

**1. Listen for HTTP requests**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.on('data', (data) => {
    socket.write(data.toString().toUpperCase());
  });
});

server.listen(3000);
```

**2. Parse HTTP request headers**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  let request = "";

  socket.on('data', (data) => {
    request += data.toString();

    if (request.endsWith('\r\n\r\n')) {
      const headers = parseHeaders(request);
      console.log(headers);
    }
  });
});

server.listen(3000);

function parseHeaders(request) {
  const headers = {};
  const lines = request.split('\r\n');

  for (let i = 1; i < lines.length; i++) {
    const [key, value] = lines[i].split(': ');
    headers[key] = value;
  }

  return headers;
}
```

**3. Send HTTP response**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.on('data', (data) => {
    const response = `HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello, world!`;
    socket.write(response);
  });
});

server.listen(3000);
```

**4. Create a TCP client**

```javascript
const net = require('net');

const client = net.createConnection({port: 3000}, () => {
  client.write('Hello, server!');
});

client.on('data', (data) => {
  console.log(data.toString());
});
```

**5. Create a UDP client**

```javascript
const net = require('net');

const client = net.createSocket('udp4');
client.connect(3000);

client.on('data', (data) => {
  console.log(data.toString());
});

client.write('Hello, server!');
```

**6. Create a TCP server**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.on('data', (data) => {
    console.log(data.toString());
    socket.write('Hello, client!');
  });
});

server.listen(3000);
```

**7. Create a UDP server**

```javascript
const net = require('net');

const server = net.createServer((socket,rinfo) => {
  socket.on('data', (data) => {
    console.log(data.toString());
    socket.write('Hello, client!');
  });
});

server.listen(3000);
```

**8. Use net.Socket.address() to get the address of the socket**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  const address = socket.address();
  console.log(address);
});

server.listen(3000);
```

**9. Use net.Socket.end() to close the socket**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.on('data', (data) => {
    socket.end('Goodbye, client!');
  });
});

server.listen(3000);
```

**10. Use net.Socket.setEncoding() to set the encoding of the socket**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.setEncoding('utf8');
  socket.on('data', (data) => {
    console.log(data);
  });
});

server.listen(3000);
```

**11. Use net.Socket.setNoDelay() to set the no delay flag of the socket**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.setNoDelay(true);
  socket.on('data', (data) => {
    socket.write(data);
  });
});

server.listen(3000);
```

**12. Use net.Socket.setKeepAlive() to set the keep-alive flag of the socket**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.setKeepAlive(true, 60000);
  socket.on('data', (data) => {
    socket.write(data);
  });
});

server.listen(3000);
```

**13. Use net.Socket.setTimeout() to set the timeout of the socket**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.setTimeout(30000);
  socket.on('data', (data) => {
    socket.write(data);
  });
});

server.listen(3000);
```

**14. Use net.Server.close() to close the server**

```javascript
const net = require('net');

const server = net.createServer((socket) => {
  socket.on('data', (data) => {
    socket.write(data);
  });
});

server.listen(3000);

setTimeout(() => {
  server.close();
}, 10000);
```

**15. Use net.Server.getConnections() to get the number of connections to the server**
