Anda di halaman 1dari 10

TUGAS PEMROGRAMAN KOMPUTER

Disusun Oleh:
1.Hafiz Surahman
2.Kalputra Hadi
3.M. Aulia Ilham
4.Yomi Saputra

FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO

UNIVERSITAS ANDALAS

PENJELASAN MENGENAI KODE


TENTANG ETHERNETSERVER

PADA

DATASHEET

ARDUINO

1. Deklarasi
Deklarasi digunakan untuk mendeskripsikan variabel-variabel
yang akan digunakan dalam program utama dan juga untuk
menambahkan file-file program yang dibutuhkan untuk menjalankan
program utama.

#include "utility/w5100.h"
#include "utility/socket.h"
extern "C" {
#include "string.h"
}
#include "Ethernet.h"
#include "EthernetClient.h"
#include "EthernetServer.h"
2. Pemanggilan
Pemanggilan adalah mendeklarasikan fungsi yang ada untuk
menjalankan program.

void EthernetServer::begin()
{
for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {
EthernetClient client(sock);
if (client.status() == SnSR::CLOSED) {
socket(sock, SnMR::TCP, _port, 0);
listen(sock);
EthernetClass::_server_port[sock] = _port;
break;

}
}
}

Class EthernetServer
Class ini digunakan untuk membuat arduino sebagai

server

yg menunggu

permintaan dari client. Class Server adalah base class untuk class Ethernetserver . Base
class tidak dipanggil langsung, tetapi dipanggil setiap kali Anda menggunakan fungsi class ini
digunakan untuk membuat sebuah objek server yang menunggu koneksi masuk pada port
tertentu.
Pada program ini bagian yang menunjukkan class ethernet server adalah

void EthernetServer::begin()
Dimana program ini berlaku sebagai server pada program ini, serta dilanjutkan
dengan fungsi for dan if pada ethernet , setelah itu sesuai dengan fungsi dari class ethernet
server untuk membuat sebuah objek server masuk pada port tertentu digunakan fungsi

EthernetClass::_server_port[sock] = _port;
Class Client ini digunakan untuk membuat arduino sebagai client yg dpt
menghubungi server Class client tdk digunakan secara langsung tetapi
sebagai base class , class ini yg akan kita gunakan
if (EthernetClient) :
ditentukan sudah siap.

Mengindikasikan jika client Ethernet yang

Fungsi yang void sering disebut juga prosedur . Disebut void


karena fungsi tersebut tidak mengembalikan suatu nilai keluaran
yang didapat dari hasil proses fungsi tersebut. Pada program ini
fungsi void berfungsi memulai server pada ethernet.

void EthernetServer::accept()
{
int listening = 0;

for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {


EthernetClient client(sock);

if (EthernetClass::_server_port[sock] == _port) {
if (client.status() == SnSR::LISTEN) {
listening = 1;
}
else if (client.status() == SnSR::CLOSE_WAIT && !client.available()) {
client.stop();
}
}
}

if (!listening) {
begin();
}
}

Pada bagian sebelumnya di program kan atau di prosedurkan bahwa


fungsi void ethernet server akan dimulai, dan pada bagian ini fungsi void
etherne server sudah diterima dan bisa lanjut ke prosedur selanjutnya,
hal ini ditandai dengan
void EthernetServer::accept()
Maksud dari program ini adalah saat nilai integer listening = 0 , dan saat nilai
untuk sock = 0 dan juga saat nilai untuk sock nya lebih kecil dari pada nilai
maksimum untuk sock, maka nilai sock nya akan bertambah
Setelah itu ethernet client berguna untuk mengidentifikasi alamat IP address
dan sock.
Selanjutnya nilai fungsi listening = 1, maka akan mengakibatkan server client
nya akan berhenti

EthernetClient EthernetServer::available()
{
accept();

for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {


EthernetClient client(sock);
if (EthernetClass::_server_port[sock] == _port) {
uint8_t s = client.status();
if (s == SnSR::ESTABLISHED || s == SnSR::CLOSE_WAIT) {
if (client.available()) {
// XXX: don't always pick the lowest numbered socket.
return client;
}
}
}
}

return EthernetClient(MAX_SOCK_NUM);
}

Class ethernet client pada bagian ini ditandai dengan


EthernetClient EthernetServer::available()

Tanda available pada fungsi void ini menandakan bahwa return value nya adalah jumlah byte yang
tersedia untuk dibaca (yaitu jumlah data yang telah diterima client dari server yang
terhubung). Available() juga merupakan turunan dari class utilitas Stream.

size_t EthernetServer::write(uint8_t b)
{
return write(&b, 1);
}

size_t EthernetServer::write(const uint8_t *buffer, size_t size)


{
size_t n = 0;

accept();

for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {


EthernetClient client(sock);

if (EthernetClass::_server_port[sock] == _port &&


client.status() == SnSR::ESTABLISHED) {
n += client.write(buffer, size);
}
}

return n;
}

Pada program di tampilkan bahwa

size_t EthernetServer::write(uint8_t b)
hal ini menunjukkan besarnya muatan atau bit yang ada , hal ini dibantu
dengan kode uin8_t yang pada umumnya menunjukkan jumlah bit yang
ada

3. Body
Body adalah bagian yang merupakan inti utama dari program
arduino. Perintah-perintah yang dituliskan dalam bentuk baris-baris
program akan diulangi secara terus-menerus. Perintah utama yang ingin
diperintahkan kepada sistem dapat dimuat di area ini.

{
for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {
EthernetClient client(sock);
if (client.status() == SnSR::CLOSED) {
socket(sock, SnMR::TCP, _port, 0);
listen(sock);
EthernetClass::_server_port[sock] = _port;
break;
}

Pada program ini bagian yang menunjukkan class ethernet server adalah

void EthernetServer::begin()
Dimana program ini berlaku sebagai server pada program ini, serta dilanjutkan dengan fungsi
for dan if pada ethernet , setelah itu sesuai dengan fungsi dari class ethernet server untuk
membuat sebuah objek server masuk pada port tertentu digunakan fungsi
EthernetClass::_server_port[sock] = _port;

if (EthernetClient) :
ditentukan sudah siap.

Mengindikasikan jika client Ethernet yang

Fungsi yang void sering disebut juga prosedur . Disebut void


karena fungsi tersebut tidak mengembalikan suatu nilai keluaran
yang didapat dari hasil proses fungsi tersebut. Pada program ini
fungsi void berfungsi memulai server pada ethernet.

{
int listening = 0;

for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {


EthernetClient client(sock);

if (EthernetClass::_server_port[sock] == _port) {
if (client.status() == SnSR::LISTEN) {
listening = 1;
}
else if (client.status() == SnSR::CLOSE_WAIT && !client.available()) {
client.stop();
}

Maksud dari program ini adalah saat nilai integer listening = 0 , dan saat nilai
untuk sock = 0 dan juga saat nilai untuk sock nya lebih kecil dari pada nilai
maksimum untuk sock, maka nilai sock nya akan bertambah
Setelah itu ethernet client berguna untuk mengidentifikasi alamat IP address
dan sock.
Selanjutnya nilai fungsi listening = 1, maka akan mengakibatkan server client
nya akan berhenti

{
accept();

for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {


EthernetClient client(sock);
if (EthernetClass::_server_port[sock] == _port) {
uint8_t s = client.status();
if (s == SnSR::ESTABLISHED || s == SnSR::CLOSE_WAIT) {
if (client.available()) {
// XXX: don't always pick the lowest numbered socket.
return client;
}
}

{
return write(&b, 1);
}

size_t EthernetServer::write(const uint8_t *buffer, size_t size)


{
size_t n = 0;

accept();

for (int sock = 0; sock < MAX_SOCK_NUM; sock++) {


EthernetClient client(sock);

if (EthernetClass::_server_port[sock] == _port &&


client.status() == SnSR::ESTABLISHED) {
n += client.write(buffer, size);
}
}

return n;
}

Anda mungkin juga menyukai