We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm using TCP/IP stack from RL-ARM Library 2.22a and starting point of my project was a sample from Keil LEDSwitch Server.
What i would like to know is what i need to do to be able to receive more then one connection. As currently that is all that i was able to establish.
Here is a debug info that i got when i tried to connect to my HW with second client:
ETH: *** Processing Ethernet frame *** ETH: Dest.MAC: 1E:30:6C:A2:45:5E ETH: Src. MAC: 00:02:B3:CE:32:23 ETH: Frame len: 62 bytes ETH: Protocol: 0800 IP : *** Processing IP frame *** IP : Dest.IP: 192.168.1.90 IP : Src. IP: 192.168.1.12 IP : Frame len: 48 bytes IP : Protocol: 06, Id: AC36 IP : Frame valid, IP version 4 OK ARP: Adding Cache Entry: 192.168.1.12 ARP: Existing Cache Entry 0 refreshed TCP: *** Processing TCP frame *** TCP: Src. Port: 1544 TCP: Dest.Port: 1001 TCP: Seq.Nr: 824812682 TCP: Ack.Nr: 0 TCP: Flags : SYN TCP: Allocated Socket 1, port 1001 TCP: Socket 1, State LISTEN... TCP ERR: Application rejected Connection request TCP: Socket 5, Sending Reset MEM: Allocating 72 bytes MEM: Allocated 1 blocks from IRQ MEM: Used 148 bytes in 2 blocks TCP: Src. Port: 1001 TCP: Dest.Port: 1544 TCP: Seq.Nr: 0 TCP: Ack.Nr: 824812683 TCP: Flags : RST,ACK IP : Sending IP frame... IP : Dest.IP: 192.168.1.12 IP : Src. IP: 192.168.1.90 IP : Frame len: 40 bytes IP : Protocol: 06, Id: 0002 ETH: Sending Ethernet frame... ARP: MAC address resolved from Cache Entry 0 ETH: Dest.MAC: 00:02:B3:CE:32:23 ETH: Src. MAC: 1E:30:6C:A2:45:5E ETH: Frame len: 54 bytes ETH: Protocol: 0800 MEM: Releasing 72 bytes MEM: Used 76 bytes in 1 blocks MEM: Releasing 76 bytes MEM: Used 0 bytes in 0 blocks
I setup 5 TCP Sockets in Net_Config.c
What i tried to create two sockets listening to same port, with same or different callback function. Result was the same.
/* Initialize TCP Socket and start listening */ socket_tcp = tcp_get_socket (TCP_TYPE_SERVER, 0, 60, tcp_callback); if (socket_tcp != 0) { tcp_listen (socket_tcp, LISTEN_TCP_PORT_NUM); } /* Initialize TCP Socket and start listening */ socket_tcp1 = tcp_get_socket (TCP_TYPE_SERVER, 0, 60, tcp_callback); if (socket_tcp1 != 0) { tcp_listen (socket_tcp1, LISTEN_TCP_PORT_NUM); }
I looked at the HTTP sample, where more clients can connect, but i guess all that is done inside the library as all you have access to is Number of HTTP Sessions.