Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 10 months ago.
Can I increase the number of active TCP connections from 3 to 5 with the latest mbed-os?
I modified the example program (below) from the mbed site and I am running this on K64F board. I am using the latest mbed-os. I can get 3 active connections. How do I increase the maximum number of active connections to 5?
include the mbed-os library with this snippet
#include "mbed.h"
#include "EthernetInterface.h"
#include "TCPServer.h"
#include "TCPSocket.h"
#define MAXCLIENTS 5
Serial pc(USBTX, USBRX);
int main()
{
pc.baud(115200);
pc.printf("TCP server example\r\n");
EthernetInterface eth;
eth.connect();
pc.printf("The Server IP address is '%s'\r\n", eth.get_ip_address());
TCPServer srv;
TCPSocket client_sock[MAXCLIENTS];
SocketAddress client_addr[MAXCLIENTS];
int connectionStatus[MAXCLIENTS];
char *buffer = new char[256];
/* Open the server on ethernet stack */
srv.open(ð);
/* Bind the HTTP port (TCP 80) to the server */
srv.bind(eth.get_ip_address(), 80);
/* Can handle x simultaneous connections */
srv.listen(MAXCLIENTS);
srv.set_blocking(false);
int numClient = 0;
int rcount = 0;
int scount = 0;
// initialize connection Status for client
for(int i=0;i<MAXCLIENTS;i++)
connectionStatus[i] = 0;
while(1)
{
for(int i=0;i < MAXCLIENTS;i++)
{
// if not connected accept connection
if (connectionStatus[i] == 0)
{
if(srv.accept(&client_sock[i], &client_addr[i]) == 0)
{
connectionStatus[i] = 1;
client_sock[i].set_blocking(false);
numClient++;
pc.printf("Client Accepted %s:%d,%d\r\n", client_addr[i].get_ip_address(),client_addr[i].get_port(),numClient);
}
}
// if connected
if (connectionStatus[i] == 1)
{
rcount = client_sock[i].recv(buffer, sizeof(buffer));
if(rcount > 0)
{
sprintf(buffer, "Hello Client %s:%d\r\n", client_addr[i].get_ip_address(),client_addr[i].get_port());
scount = client_sock[i].send(buffer, strlen(buffer));
}
if(rcount == 0) // client disconnected
{
connectionStatus[i] = 0;
pc.printf("Client Disconnected %s:%d\r\n", client_addr[i].get_ip_address(),client_addr[i].get_port());
client_sock[i].close();
numClient--;
}
if(scount < 0) // unable to send data
{
connectionStatus[i] = 0;
pc.printf("Connection lost %s:%d\r\n", client_addr[i].get_ip_address(),client_addr[i].get_port());
client_sock[i].close();
numClient--;
}
}
}
wait(0.5f);
}
}