
Server-Side TCP
main.cpp@0:409058e5bb63, 2020-11-07 (annotated)
- Committer:
- flixus
- Date:
- Sat Nov 07 20:25:52 2020 +0000
- Revision:
- 0:409058e5bb63
TCP-Program server side
Who changed what in which revision?
User | Revision | Line number | New 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(ð); |
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 |