Kamis, 28 Juni 2012

WP7: Masalah pada Windows Phone Emulator Is Doing A Complete OS Boot




Setelah membaca beberapa diskusi tentang online masalah tampaknya emulator tidak bekerja dengan beberapa jenis virtualisasi hardware. Rupanya cpu AMD di netbook saya tidak didukung dan tidak ada cara untuk mematikan perangkat tambahan virtualisasi di BIOS.


Jadi saya melihat sekeliling dan menemukan file konfigurasi emulator. Dalam file adalah pengaturan untuk mengubah Hardware Assist off. Saya mengatur nilai false, dimulai emulator dan sekarang bekerja sempurna. Ini mungkin tidak bekerja terlalu baik jika aplikasi Anda adalah CPU intensif seperti permainan, tetapi untuk penggunaan saya itu bekerja dengan baik.






Berikut adalah cara untuk mengkonfigurasinya:


  • Open a command window and go to %LOCALAPPDATA%\microsoft\xde
  • There will be a file similar to config_*.decfg
  • Open the file in notepad and look for a line that looks like this:
  •         <EnableHWAssist Reconfigurable="static" Type="bool">true</EnableHWAssist>
  • Change “true” to “false”
  • Save the file and start the emulator.

Kamis, 14 Juni 2012

Aplikasi Chatting sederhana dengan JAVA

Chatting merupakan sebuah aktifitas mengobrol dengan saling balas membalas antara kedua belah pihak. Terasa formal penjelasan nya, tapi pada intinya chatting merupakan kegiataan ringan saling berbalas-balas pesan. Pernahkan kita terpikirkan tentang apa yang terjadi selama kita chatting? kok bisa kita membaca pesan dari teman? kok bisa kita mengirim kan pesan kepada teman? dan yang terakhir bagaimana sih membuat nya? :D

Dalam membangun aplikasi chatting, kita setidak sudah membekali diri kita dengan pengetahuan sedikit mengenai soket programming di posting sebelumnya :D. Tidak perlu banyak, yang penting kita mngerti konsep konsepnya. Mendefenisikan sock nya atau menyiapkan port listenernya dan lain lainnya.

Saya tidak akan menampilkan source code nya disini, nanti akan saya berikan link donlodnya, saya akan menjelaskan secara singkat saja aplikasi yang akan kita bangun :).

Aplikasi terdiri dari server dan juga client, pada sisi server kita tidak perlu lagi untuk memasukan ip dari client. kita cukup perlu menunggu saja koneksi dari client. Sedangkan dari sisi client, perlu untuk mengeset ip dari server, sehingga bisa saling terkoneksi. Sebenarnya yang terpenting adalah kedua nya berada didalam satu jaringan network, karena aplikasi kita masih sederhana dan belum terlalu jauh untuk yang berada diluar network.

Sedikit menambah informasi, Dua protokol komunikasi utama untuk jaringan berbasis IP dan dapat digunakan dalam kaitannya dengan pemrograman socket :
1. UDP (User Datagram Protocol)
Setiap kali datagram akan dikirim, alama socket penerima harus ditetapkan setiap saat.
2. TCP (Transmission Control Protocol)
Sebelum memulai pertukaran data, sepasang socket dibuat sebagai sambungan. Satu socket sebagai server socket yang bertugas mendengarkan sambungan sedangkan yang lain meminta server socket untuk sambungan. Setelah terbentuk sambungan tersebut, socket baru dapat digunakan untuk mengirimkan data.

untuk langsung mencoba anda bisa lihat dan running source code di link download berikut. 

pass : 49012037


Skema Aplikasi Socket Programming sederhana

Server

1. Pasang socket dengan socket().
2. Buka port komunikasi, dengan bind ().
3. Dengarkan socket dengan listen().
4. Dalam looping, terima hubungan client dengan accept().
5. Buat child dari program dengan fork() agar dapat melayani banyak client sekaligus, masing-masing child akan melayani satu client.
6. Kirim pesan dengan send().
7. Tutup socket dengan close() atau shutdown().
8. Akhiri child process dengan exit().

contoh:

/* serverteman.c */
#include
#include
#include
#include
#include
#include
#include
#define KONEKSI_MAKSIMAL 10
int main (int argc, char *argv[])
{
struct sockaddr_in alamat_serv;
struct sockaddr_in alamat_clie;
unsigned no_port;
int socketfd;
if (argc != 2) {
fprintf (stderr, “gunakan: %s \n”, argv[0]);
exit(1);
}
no_port = atoi (argv[1]);
socketfd = socket (AF_INET, SOCK_STREAM, 0);
/* untuk membersihkan child process,
yang telah selesai */
signal(SIGCHLD, SIG_IGN);
/* kita reset terlebih dahulu variable alamat_serv */
bzero (&alamat_serv, sizeof(alamat_serv));
alamat_serv.sin_family = AF_INET;
alamat_serv.sin_port = htons (no_port);
/* macro INADDR_ANY menghasilkan current ip */
alamat_serv.sin_addr.s_addr = htonl (INADDR_ANY);
/* buka port */
if (bind (socketfd, (struct sockaddr *)&alamat_serv, sizeof (struct sockaddr)) < 0) {
fprintf (stderr, “maaf ya, tidak bisa memasang port !\n”);
exit(1);
}
printf (“serverteman menunggu teman datang …\n”);
/* menuggu koneksi yang masuk,
* koneksi maksimal dilayani sebanyak KONEKSI_MAKSIMAL
*/
listen (socketfd, KONEKSI_MAKSIMAL);
while(1) {
int client_size = sizeof (struct sockaddr_in);
int newfd;
/* menerima koneksi yang datang */
newfd =accept (socketfd, (struct sockaddr *)&alamat_clie, &client_size);
if(newfd == -1) {
perror (“accept”);
/* jika terjadi error akan looping lagi */
continue;
}
/* mengetahui siapa yang mengadakan koneksi */
printf(“Teman dari %s telah datang\n”, inet_ntoa (alamat_clie.sin_addr));
/* fork mengasilkan nilai return 0 pada child process,
pada parent process, fork() menghasilkan nilai pid dari child yang diciptakan*/
if (!fork ()) {
/* child process */
/* peringatan !, variabel buffer hanya menampung 255 karakter */
char buffer[256];
sprintf (buffer, “Halo Teman, selamat datang di Server.Teman\n”);
/* kirim pesan */
if (send (newfd, buffer, strlen (buffer), 0) == -1) {
perror (“send”);
continue;
}
close (newfd);
exit (0);
}
else
/* parent process,
disini tidak dibutuhkan newfd, jadi sebaiknya ditutup.
parent process akan looping lagi untuk menerima client yang lain*/
close (newfd);
}
return 0;
}
/* serverteman.c */
ok sekarang kita compile:
gcc -o serverteman serverteman.c
lalu jalankan:
./serverteman 1024
mudah-mudahan serverteman sudah jalan.
catatan: untuk menjalankannya, jika anda bukan root port yang bisa ‘buka’ adalah >= 1024.
nah jika teman-teman mau mencoba ‘layanan’ serverteman, karena kita belum membuat program client-nya, telnet dapat kita gunakan.
telnet 127.0.0.1 1024
coba lihat pada terminal yang menjalankan client,
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
Halo Teman, selamat datang di Server.Teman
Connection closed by foreign host.
lalu coba lihat pada terminal yang menjalankan serverteman,
Teman dari 127.0.0.1 telah datang

Client

1. pasang dengan socket().
2. dapatkan alamat server dengan gethostbyname().
3. terima seluruh data yang dikirmkan dalam looping dengan recv().
4. tutup koneksi dengan close().
contoh:

/* clienteman.c */
#include
#include
#include
#include
#include
#include
#include
#include
int main (int argc, char *argv[])
{
struct sockaddr_in alamat_ku;
struct sockaddr_in tujuan;
struct hostent *host_server;
int socketfd, connect_status, baca;
int no_port;
char buffer[256];
if (argc != 3) {
fprintf (stderr, “gunakan: %s \n”, argv[0]);
exit(1);
}
if ((socketfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
fprintf (stderr, “tidak bisa memasang socket !\n”);
exit(1);
}
if ((host_server = gethostbyname(argv[1])) == NULL) {
fprintf (stderr, “Nama host mungkin salah :)\n”);
exit(1);
}
no_port = atoi(argv[2]);
bzero (&tujuan, sizeof(tujuan));
tujuan.sin_family = AF_INET;
tujuan.sin_port = htons (no_port);
memcpy ((char *)&tujuan.sin_addr.s_addr, host_server->h_addr_list[0], host_server->h_length);
if ((connect_status = connect (socketfd, (struct sockaddr *)&tujuan, sizeof(tujuan))) < 0) {
fprintf(stderr, “%s: tidak dapat melakukan koneksi\n”, argv[0]);
exit(1);
}
while((baca = recv(socketfd, buffer, strlen(buffer), 0)) > 0) {
printf(“%s”, buffer);
}
close (socketfd);
return 0;
}
/* clienteman.c */

lalu kita compile:
gcc -o clienteman clienteman.c
jalankan:
./clienteman 127.0.0.1 1024
nomor ip dan port sesuaikan dengan server tujuan.
nah artikel-nya sampe disini dulu.
jika teman-teman ingin belajar lebih jauh tentang socket programming,
ada banyak sekali artikel lain tentang socket programming, coba cari di search engine.



Mengenal Socket Programming

Pada dasarnya socket adalah sebuah cara untuk berkomunikasi dengan program atau node lain menggunakan file deskriptor. Di UNIX (dimana socket diciptkan) kita sering mendengar slogan: “everything is a file”, jadi untuk berkomunikasi dengan program atau node lain semudah kita membaca dan menulis file deskriptor. Antarmuka socket dan file adalah mirip, jika pada file kita membukanya dengan open() sedangkan pada socket kita manggunakan socket(). Pada file deskriptor yang menjadi tujuan adalah sebuah file, sedangkan pada socket adalah komputer atau node lain. Intinya ketika kita telah terhubung dengan socket(), maka antarmukanya sama saja dengan sebuah file.


Socket Stream dan Datagram
 
Pada umumnya socket ada dua macam yang sering dipakai (sebenarnya ada 4 lagi). Yang pertama disebut ‘Socket Stream’ (SOCK_STREAM) dan yang kedua adalah ‘Socket Datagram’ (SOCK_DGRAM). Lalu apa perbedaanya?, (Ini sepengatahuan saya :) untuk Socket Stream, data dikomunikasikan (dikirmkan) secara simultan, Socket Stream menggunakan protokol TCP. Seperti yang kita tahu TCP mengantar data secara simultan, selalu mencek dan mengirim ulang jika terjadi error.

Sedangkan pada Socket Datagram (juga dikenal “connectionless socket”), data mencapai/sampai ke node lain tanpa membuat koneksi, sehingga dalam perjalanan ke tujuan data dapat saja hilang karena tidak ada koneksi langsung antara kedua host, jika datanya sampai ke tujuan berarti ‘error-free’. Biasanya Socket Datagram digunakan dalam pengiriman data per packet, contoh FTP. Sederhananya socket jenis ini hanya ‘memancarkan’ saja, tidak untuk berinteraksi.

Fungsi-fungsi yang sering digunakan
 
0. socket(), membuat socket.
1. htonl(), meng-convert unsigned integer ke network byte order.
2. inet_ntoa(), ntoa singkatan ‘network to ascii’,
nilai return-nya berupa string dari alamat yang dilewatkan.
3. inet_addr(), meng-convert string menjadi network byte order.
4. bind(), digunakan pada pihak server, untuk membuka ‘port’ komunikasi.
5. write(), send(), bertugas mengirimkan data.
6. read(), recv(), bertugas menerima data.
7. connect(), digunakan pada pihak client, untuk mengadakan koneksi ke server.
8. listen(), menunggu koneksi socket.
9. accept(), menerima koneksi socket.
10.close(), shutdown() menutup atau mengakhiri koneksi