Server-Side TCP

Dependencies:   C12832

Committer:
flixus
Date:
Sat Nov 07 20:25:52 2020 +0000
Revision:
0:409058e5bb63
TCP-Program server side

Who changed what in which revision?

UserRevisionLine numberNew contents of line
flixus 0:409058e5bb63 1 #include "mbed.h"
flixus 0:409058e5bb63 2 #include "EthernetInterface.h"
flixus 0:409058e5bb63 3 #include "C12832.h"
flixus 0:409058e5bb63 4
flixus 0:409058e5bb63 5 TCPServer Server(EthernetInterface eth);
flixus 0:409058e5bb63 6 EthernetInterface Connect(void);
flixus 0:409058e5bb63 7 void ReceiveData(TCPSocket client);
flixus 0:409058e5bb63 8 void PrintData(void);
flixus 0:409058e5bb63 9 DigitalOut led(LED1);
flixus 0:409058e5bb63 10 C12832 lcd(D11, D13, D12, D7, D10);
flixus 0:409058e5bb63 11
flixus 0:409058e5bb63 12
flixus 0:409058e5bb63 13 float temp = 0;
flixus 0:409058e5bb63 14 char pwm =' ';
flixus 0:409058e5bb63 15 char senderID = ' ';
flixus 0:409058e5bb63 16
flixus 0:409058e5bb63 17 int main()
flixus 0:409058e5bb63 18 {
flixus 0:409058e5bb63 19
flixus 0:409058e5bb63 20 printf("Server example\n\r");
flixus 0:409058e5bb63 21 EthernetInterface eth = Connect();
flixus 0:409058e5bb63 22 TCPServer srv = Server(eth);
flixus 0:409058e5bb63 23
flixus 0:409058e5bb63 24 while(true){
flixus 0:409058e5bb63 25
flixus 0:409058e5bb63 26 TCPSocket client;
flixus 0:409058e5bb63 27 SocketAddress client_addr;
flixus 0:409058e5bb63 28 char *buffer = "Hello TCP client!\r\n";
flixus 0:409058e5bb63 29
flixus 0:409058e5bb63 30 srv.accept(&client, &client_addr);
flixus 0:409058e5bb63 31 printf("Accepted %s:%d\n\r", client_addr.get_ip_address(),
flixus 0:409058e5bb63 32 client_addr.get_port());
flixus 0:409058e5bb63 33
flixus 0:409058e5bb63 34
flixus 0:409058e5bb63 35
flixus 0:409058e5bb63 36 ReceiveData(client);
flixus 0:409058e5bb63 37 client.send(buffer, 256);
flixus 0:409058e5bb63 38 PrintData();
flixus 0:409058e5bb63 39 client.close();
flixus 0:409058e5bb63 40
flixus 0:409058e5bb63 41 }
flixus 0:409058e5bb63 42 }
flixus 0:409058e5bb63 43 void PrintData(void){
flixus 0:409058e5bb63 44 lcd.cls();
flixus 0:409058e5bb63 45 lcd.locate(0,3);
flixus 0:409058e5bb63 46 lcd.printf("Temp = %.1f\n", temp);
flixus 0:409058e5bb63 47 lcd.printf("PWM = %d\n", pwm);
flixus 0:409058e5bb63 48 lcd.printf("ID Sender = %d\n", senderID);
flixus 0:409058e5bb63 49 }
flixus 0:409058e5bb63 50
flixus 0:409058e5bb63 51 void ReceiveData(TCPSocket client){
flixus 0:409058e5bb63 52 char data[4];
flixus 0:409058e5bb63 53 client.recv(data, sizeof data);
flixus 0:409058e5bb63 54 float temp = float((data[0]<<8)|data[1]) / 256.0;
flixus 0:409058e5bb63 55 char pwm = data[2];
flixus 0:409058e5bb63 56 char senderID = data[3];
flixus 0:409058e5bb63 57 printf("The temperature is: %f\r\n", temp);
flixus 0:409058e5bb63 58 printf("The PWM value is: %d\r\n", pwm);
flixus 0:409058e5bb63 59 printf("The ID from the sender is: %d\r\n", senderID);
flixus 0:409058e5bb63 60 }
flixus 0:409058e5bb63 61
flixus 0:409058e5bb63 62 EthernetInterface Connect(void){
flixus 0:409058e5bb63 63 EthernetInterface eth;
flixus 0:409058e5bb63 64 eth.set_network("192.168.0.10","255.255.255.0","192.168.0.1");
flixus 0:409058e5bb63 65 eth.connect();
flixus 0:409058e5bb63 66 printf("The Server IP address is '%s'\n\r", eth.get_ip_address());
flixus 0:409058e5bb63 67 return eth;
flixus 0:409058e5bb63 68 }
flixus 0:409058e5bb63 69
flixus 0:409058e5bb63 70 TCPServer Server(EthernetInterface eth){
flixus 0:409058e5bb63 71 TCPServer srv(&eth);
flixus 0:409058e5bb63 72 srv.bind(4000);
flixus 0:409058e5bb63 73 srv.listen();
flixus 0:409058e5bb63 74 return srv;
flixus 0:409058e5bb63 75 }
flixus 0:409058e5bb63 76
flixus 0:409058e5bb63 77
flixus 0:409058e5bb63 78