레이블이 TCP Client인 게시물을 표시합니다. 모든 게시물 표시
레이블이 TCP Client인 게시물을 표시합니다. 모든 게시물 표시

2015년 7월 5일 일요일

DNSWebClient

DNS Web Client

자세한 사항은 아래의 링크와 그림을 참고 한다.

DNS

  • DNS-wikipedia
    DNS
    *참고:http://www.routercheck.com/wp-content/uploads/2014/03/dns-and-ipv6-470x282.jpg

    HTTP

  • HTTP-wikipedia
    HTTP
    *참고:http://codegangsta.gitbooks.io/building-web-apps-with-go/content/http_basics/http_diagram.png

Do DnsWebClient

  1. Create New Program as DNS Web Client
    2015-07-03_14-49-16
  2. Confirm the created program
    2015-07-03_14-49-44
  3. Import WIZnetInterface by using Import Wizard:”https://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/"(1)
    2015-07-03_14-52-50
  4. Make Codes

    • Set DHCPclient, Sourtce port and Domain name server
      2015-07-06_13-08-46
    • TCP-connection, TCP-recv and Display received data
      2015-07-06_13-09-22
  5. Confirm packets bye WireShark
    5.1 DHCP complite
    5.2 DNS handshake between Clinet and DNS server
    5.3 TCP-Connection between Clinet and HTTP server
    5.4 Request HTTP GET
    5.5 RECV TCP DATA: HTTP page
    2015-07-06_11-26-47

  6. DNS packet

    • 5.1 DNS Request
      2015-07-06_12-55-45
    • 5.2 DNS Reponse
      2015-07-06_12-56-51
  7. Confirm Serial Teminal

    • Set Serial teminal
      2015-07-03_13-07-00
    • Display
      2015-07-03_17-40-38

Code Repository

https://developer.mbed.org/users/embeddist/code/DNSWebClient/

Ref. Code

#include "mbed.h"
#include "EthernetInterface.h"

#define ECHO_SERVER_PORT   23 // telnet defaults to port 23

DigitalOut myled(LED1);

// Initialize the Ethernet client library
EthernetInterface eth;

int main() {
    // Enter a MAC address for your controller below.
    uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 

    // initializing MAC address
    eth.init(mac_addr);

    // Check Ethenret Link
    if(eth.link() == true)
        printf("- Ethernet PHY Link-Done \r\n");
    else
        printf("- Ethernet PHY Link- Fail\r\n");

    // Start Ethernet connecting: Trying to get an IP address using DHCP
    if ( eth.connect() < 0 )
        printf("Fail - Ethernet Connecing");
    else
    {
        // Print your local IP address:
        printf("IP=%s\n\r",eth.getIPAddress());
        printf("MASK=%s\n\r",eth.getNetworkMask());
        printf("GW=%s\n\r",eth.getGateway());
    }        

    TCPSocketServer server;
    server.bind(ECHO_SERVER_PORT);
    server.listen();

    while (true) {
        printf("\nWait for new connection...\n\r");
        TCPSocketConnection client;
        server.accept(client);
        //client.set_blocking(false, 1500); // Timeout after (1.5)s

        printf("Connection from: %s\n\r", client.get_address());
        char buffer[256];
        while (true) {
            int n = client.receive(buffer, sizeof(buffer));
            if (n <= 0) break;

            // print received message to terminal
            buffer[n] = '\0';
            printf("Received message from Client :'%s'\n\r",buffer);

            // reverse the message
            char temp;
            for(int f = 0, l = n-1; f<l; f++,l--){
                temp = buffer[f];
                buffer[f] = buffer[l];
                buffer[l] = temp;
                }

            // print reversed message to terminal
            printf("Sending message to Client: '%s'\n\r",buffer);

            // Echo received message back to client
            client.send_all(buffer, n);
            if (n <= 0) break;
        }

        client.close();

        //led blinky
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

2014년 7월 10일 목요일

Python Simple Script for WIZ107SR

Source Github Link

WIZ107SR



WIZ107SR is a gateway module that converts serial protocol (RS-232) into TCP/IP protocol by using W7100A.

Link WIZ107SR materials - WIZ107SR

SW - Download & Install





Script descriptions - TCPClient




  • Init. serial port number and baudrate



[code lang=c]
serial.Serial("COM1", 57600)
[/code]


  • Change to serial commond mode



Change to serial command mode; when serial command switch code is '123'.
Just only input serial command mode switch code of 3bytes without '\r\n'.
Serial command mode switch code is set by using ConfigTool.

[code lang=c]
ser.write(b'123')
[/code]


  • Setting TCPClient mode



[code lang=c]
ser.write(b'LP5000rn') # Source port number : ex.) 5000
ser.write(b'RP3000rn') # TCP server port number : ex.) 3000
ser.write(b'RH192.168.10.100rn') # TCP server IP address : ex.) '192.168.10.100'
ser.write(b'OP0rn') # Set TCP Client mode : OP0 - TCPClinet
ser.write(b'SVrn') # Save Setting
ser.write(b'RTrn') # Reboot
[/code]


  • Send



[code lang=c]
ser.write(b'hellorn')
[/code]


  • recv



[code lang=c]
serial_recv_buf = 10
line = ser.read(serial_recv_buf)
[/code]

FAQ; How know the status of TCP connections ?



We can know the TCP connection by using 8pin.

In the initial time, this pin is INPUT for Hardware Trigger(for
serial command mode). After that, this pin is OUTPUT for
connection status. When the connection is established, this pin
goes Low. And, it will go HIGH when connection is closed.