วันอาทิตย์ที่ 23 ตุลาคม พ.ศ. 2554

ไว้อาลัยสตีฟ จ๊อบส์ เสียชีวิตแล้วอย่างสงบด้วยวัย 56 ปี

 สตีฟ จ๊อบส์ ผู้ก่อตั้งบริษัท apple และเป็นผู้ที่มีส่วนรวมทำให้เกิดนวัฒกรรมใหม่ๆ อย่าง ipod, iphone, ipad นั้นได้เสียชีวิตด้วยโรคมะเร็งตับเมื่อวันที่ 5 ตุลาคมหรือ 6 ตุลาคม 2554 ตามเวลาในประเทศไทย นับว่าเป็นการสูญเสียและผลกระทบต่อวงการไอทีทั้ง วงการเลยที่เดียว สตีฟ จ๊อบส์ นั้นสร้าง apple จนยิ่งใหญ่ในทุกวันนี้
ท่านสามารถอ่านต่อได้ที่  ไว้อาลัยสตีฟ จ๊อบส์ เสียชีวิตแล้วอย่างสงบด้วยวัย 56 ปี

วันศุกร์ที่ 21 ตุลาคม พ.ศ. 2554

สารคดี ชีวประวัติ สตีฟ จ๊อบ จิตวิญญาณแห่ง apple

ถ้าผู้ถึงบุคคลในวงการไอทีแล้วละก่อน คนหนึ่งที่มีบทบาทสำคัญมากก็คือ สตีฟ จ๊อบ แห่ง apple นั้นเอง
apple steve job
เค้าเป็นผู้ที่ก่อตั้ง บริษัท apple ตั้งแต่แรกเริ่มจนยิ่งใหญ่ทุกวันนี้ และมีช่วงเวลาหนึ่งที่เขาได้ทะเลาะกับฝ่ายบริหารที่เขาทำการจ้างมาเอง จนเป็นเห็นให้ สตีฟ จ๊อบ ต้องออกจาก apple ช่วงที่ขาด จ็อบในครั้งนั้น apple เรียกได้ว่า ขาดทุกอย่างเลยทั้ง จิตวิญญาณ วิสัยทัศน์ เอกลักษณ์เฉพาะ

อ่านต่อ  สารคดี ชีวประวัติ สตีฟ จ๊อบ จิตวิญญาณแห่ง apple

วันพุธที่ 23 ธันวาคม พ.ศ. 2552

Java TCPEchoClient

ในบทความตอนที่แล้วเกี่ยวกับ TCPEchoServer ซึ่งจะแสดงข้อความตอบกลับมาเมื่อเราเข้าใช้บริการผ่านทาง telnet ในตอนนี้ก็จะเป็นการเขียนโปรแกรมฝั่ง client ที่จะทำหน้าที่คุยกับโปรแกรมฝั่ง server ของตอนที่แล้ว ซึ่งขั้นตอนของฝ่าย client ก็ไม่มีอะไรมาก ขั้นแรกก็ทำการสร้าง socket ไปยัง server และ port ของ server โดยที่นี้มีการประกาศตัวแปร
private static InetAddress host;
ซึ่งเป็นตัวแปรแบบ InetAddress หลังจากนั้นทำการกำหนด IP ของเครื่องตัวเองซึ่งใช้คำสั่งนี้ครับ
host = InetAddress.getLocalHost();
หลังจากนั้นก็มีการสร้าง method เพื่อประมวลผลการทำงานกับ server ซึ่งมีชื่อว่า accessServer() ที่จะทำหน้าที่กำหนด inputStream และ OutputStream คล้ายๆกับโปรแกรมที่ผ่านมาแล้วทำการส่งข้อความไปมาระหว่าง server

อ่านต่อ
ตัวอย่างโค้ดครับ

import java.io.*;
import java.net.*;
import java.util.*;
public class TCPEchoClient
{
private static InetAddress host;
private static final int PORT = 1234;
public static void main(String[] args)
{
try
{
host = InetAddress.getLocalHost();
}
catch(UnknownHostException uhEx)
{
System.out.println("Host ID not found!");
System.exit(1);
}
accessServer();
}

private static void accessServer()
{
Socket link = null; //Step 1.
try
{
link = new Socket(host,PORT); //Step 1.
Scanner input =new Scanner(link.getInputStream()); //Step 2.
PrintWriter output =new PrintWriter(link.getOutputStream(),true); //Step 2.
//Set up stream for keyboard entry...
Scanner userEntry = new Scanner(System.in);
String message, response;
do
{
System.out.print("Enter message: ");
message = userEntry.nextLine();
output.println(message); //Step 3.
response = input.nextLine(); //Step 3.
System.out.println("\nSERVER> "+response);
}while (!message.equals("***CLOSE***"));
}
catch(IOException ioEx)
{
ioEx.printStackTrace();
}
finally
{
try
{
System.out.println("\n* Closing connection... *");
link.close(); //Step 4.
}
catch(IOException ioEx)
{
System.out.println("Unable to disconnect!");
System.exit(1);
}
}
}
}


วันจันทร์ที่ 21 ธันวาคม พ.ศ. 2552

Java Echo Server

Java Echo Server เป็นตัวอย่างง่ายๆ ที่ server จะรับข้อความจาก client และทำการเก็บและนับข้อความ หลังจากนั้นจะตอบข้อความกลับ โดยที่จะรับและแสดงข้อความตอบกลับไปเรื่อยๆจนกว่าจะพิมพ์ข้อความว่า protocol for this service is
"***CLOSE***" ถึงจะทำการปิดการเชื่อมต่อ ในโปรแกรมนี้อาจมีข้อผิดพลาดในการรับและส่งข้อความดังนั้นจึงต้องมี try catch IOException เพื่อทำงานในกรณีที่ผิดพลาดหลังจากนั้นก็จะต้องมี final เพื่อที่ไม่ว่ากรณีใดก็ตามจะต้องปิดการเชื่อมต่อหลังทำงานเสร็จสิ้นเพื่อที่จะได้ไม่ค้างการเชื่อมต่อไว้ ซึ่งในการเชื่อมต่อระหว่าง server กับ client จะเชื่อมต่อผ่าน socket และ server จะต้องทำงานซ้ำตลอดจึงต้องมี loop infinite เพื่อที่จะได้ให้บริการ client ตลอดเวลา โดยที่ทำการสร้าง method handleClient เพื่อจัดการให้บริการ client ที่เข้ามาใช้บริการ ดังโค้ดตัวอย่างบ้างส่วน

อ่านต่อ

do{
handleClient();
}while (true);


นี้เป็นโค้ดในส่วนของการทำซ้ำที่จะทำไปเรื่อยจนกว่าจะบริการเครื่อง client เสร็จสิ้น และโปรแกรมตัวอย่างนี้จะให้บริการผ่าน port 1234
โค้ดของ program TCPEchoServer

//Server that echoes back client's messages.
//At end of dialogue, sends message indicating number of
//messages received. Uses TCP.
import java.io.*;
import java.net.*;
import java.util.*;
public class TCPEchoServer
{
private static ServerSocket servSock;
private static final int PORT = 1234;
public static void main(String[] args){
System.out.println("Opening port...\n");
try
{
servSock = new ServerSocket(PORT); //Step 1.
}
catch(IOException ioEx)
{
System.out.println("Unable to attach to port!");
System.exit(1);
}
do{
handleClient();
}while (true);
}

private static void handleClient()
{
Socket link = null; //Step 2.
try
{
link = servSock.accept(); //Step 2.
Scanner input = new Scanner(link.getInputStream());//Step 3.
PrintWriter output = new PrintWriter(link.getOutputStream(),true); //Step3.
int numMessages = 0;
String message = input.nextLine(); //Step 4.
while (!message.equals("***CLOSE***"))
{
System.out.println("Message received.");
numMessages++;
output.println("Message " + numMessages + ": " + message); //Step 4.
message = input.nextLine();
}
output.println(numMessages + " messages received.");//Step 4.
}
catch(IOException ioEx)
{
ioEx.printStackTrace();
}
finally
{
try
{
System.out.println("\n* Closing connection... *");
link.close(); //Step 5.
}
catch(IOException ioEx)
{
System.out.println("Unable to disconnect!");
System.exit(1);
}
}
}
}

ขั้นตอนในการทำงานมี 4 ขั้นตอน
1. สร้างการเชื่อมต่อของ server
เราได้สร้าง Socket object โดยใช้ค่า arguments 2 ค่า นั้นคือ
• IP server (ชนิดแบบ InetAddress);
• หมายเลข port ที่ให้บริการ
ดังโค้ดนี้
Socket link = new Socket(InetAddress.getLocalHost(),1234);
2.กำหนด input และ output stream
ในการกำหนด ก็เหมือนกับบทความที่แล้วคือ getInputStream และ getOutputStream
3. รับและส่งข้อมูล
โดยการใช้ object ของ Scanner ในการอ่านและรับข้อมูล ส่วนการส่งข้อมูลนั้นใช้ PrintWriter
4. ปิดการเชื่อมต่อโดย close Socket
สามารถลองทดสอบรันโปรแกรมแล้ว ใช้เมนู run คำสั่ง cmd เพื่อ telnet 127.0.0.1 1234 แล้วพิมข้อความที่ต้องการ

วันอาทิตย์ที่ 20 ธันวาคม พ.ศ. 2552

Java TCP Sockets

http://ecx.images-amazon.com/images/I/51tkvoGC8jL._SL500_.jpg
การสร้างลิงค์ติดต่อสื่อสารแบบ TCP/IP ที่เป็น sockets เป็นการเชื่อมต่อแบบ connection-orientated
ซึ่งนั้นก็หมายความว่าการสนทนาระหว่างเครื่อง client กับ server จะทำการเชื่อมต่อตลอดเวลาที่สนทนานอกเสียจากมันจะเสีย ซึ่งการสนทนากันหรือการแลกเปลี่ยนข้อมูลระหว่าง client กับ server นั้นจะต้องเป็นไปตามกฎของ protocol ซึ่งจะการกำหนดลักษณะการทำงานนั้น ทำให้สามารถแบ่งขั้นตอนการทำงานของ server ได้ 5ขั้นตอน ดังนี้

อ่านต่อ
1. สร้าง object ของ ServerSocket
ServerSocket constructor ต้องการค่า หมายเลข port (มีค่าตั้งแต่ 1024-65535 โดยไม่คิดรวมหมายเลข port สงวน ) เป็นค่า argument ตัวอย่างเช่น
ServerSocket servSock = new ServerSocket(1234);
จากตัวอย่างนี้จะทำให้ server ให้บริการ client ที่ทำการเชื่อมต่อมายัง port 1234
2. ทำให้ server อยู่ในสถานะพร้อมบริการ
Server จะอยู่ในสถานะที่รอให้บริการได้นั้นจะต้องมีการเรียกใช้ method accept ของ class ServerSocket ซึ่งจะreturn ค่าเป็น object ของ Socket class ตัวอย่างการใช้งานเช่น
Socket link = servSock.accept();
3. ตั้งค่า input และ output stream
methods getInputStream และ getOutputStream เป็น method ที่ class Socket ใช้สำหรับ อ่านค่าที่ได้จาก stream ในการเชื่อมต่อกันใน 2 ขั้นตอน ในการเชื่อมต่อสื่อสาร client ได้สร้าง connection เราสามารถใช้ Scanner object ในการอ่านค่าจาก InputStream object โดย return ค่าโดน method getInputStream โดยอยู่ในรูป string – orientated input โดยถูกกำหนดจาก standard input stream,System.in
ตัวอย่างเช่น
Scanner input = new Scanner(link.getInputStream());
ลักษณะคล้ายกัน เราก็สามารถส่ง output โดยใช้ PrintWriter object ในการส่งค่า output ไปยัง OutputStream object โดยใช้ method ที่ชื่อว่า getOutputStream ซึ่งสามารถใช้ได้โดยการกำหนดค่า ใน constructor ของ PrintWriter โดยกำหนดค่า agument 2 ค่า
ตัวอย่าง
PrintWriter output = new PrintWriter(link.getOutputStream(),true);
4. ส่งและรับข้อมูล
หลังจากที่ทำการ set up Scanner และ PrintWrite ให้สามารถส่งและรับข้อมูลได้แล้วก็จะทำการรับและส่งข้อมูล โดยใช้ method nextLine สำหรับอ่านข้อมูลที่รับเข้ามา และใช้ method println สำหรับส่งข้อมูล
ตัวอย่างการใช้งาน
output.println("Awaiting data...");
String input = input.nextLine();
5. สุดท้ายเมื่อเสร็จสิ้นการเชื่อมต่อก็ต้องทำการปิดการเชื่อมต่อ

วันเสาร์ที่ 12 ธันวาคม พ.ศ. 2552

เขียนโปรแกรม Java หาไอพีของเครื่องตัว เอง

เขียนโปรแกรม Java หาไอพีของเครื่องตัว เอง

ในการเขียนโปรแกรมครั้งนี้จะเป็น การใช้ method ของ Class InetAddress ที่ชื่อว่า getLocalHost() ซึ่งต้องทำการ import java.net.*; เข้ามาด้วยโดยที่หลังจากเรียกใช้แล้วจะคืนค่าเป็น address ip ของเราสามารถทำการโดยแสดง ผลได้เลยโดยใช้ System.out.println ได้ เลยแต่อย่าลืม try catch ด้วยนะครับ โดยใช้ Exeption ที่มีชื่อว่า UnknowHostException เพื่อไม่มี host ดังกล่าว

โค้ดโปรแกรม
อ่านต่อ

import java.net.*;

public class MyLocalIPAddress

{

public static void main(String[] args)

{

try

{

InetAddress address = InetAddress.getLocalHost();

System.out.println(address);

}

catch (UnknownHostException uhEx)

{

System.out.println(

"Could not find local address!");

}

}

}

ผลลัพธ์การรันโปรแกรม


วันพุธที่ 9 ธันวาคม พ.ศ. 2552

เริ่มต้นเขียน Java network Programming ด้วย Class InetAddress

Class หนึ่งใน java.net ที่ชื่อว่า InetAddress ซึ่งสามารถจัดการ Internet addresses ทั้ง host names และ IP addresses. โดยใช้ Static method ที่มีชื่อว่า getByName ซึ่ง class จะไปถาม DNS (Domain Name System) ว่ามี ชื่อ host ที่ป้อนเข้าไปมีไอพีอะไร ซึ่งค่าที่ได้รับกลับมาจะอยู่ใน object InetAddress โดยแสดงเป็นหมายเลขไอพี โดยที่เราจะสามารถแสดงผลได้อย่างง่ายโดยใช้ method println
ตั้งแต่ method getByName จะต้องมีการ throws ตรวจสอบความผิดพลาดที่อาจเกิดขึ้นได้โดยใช้
exception UnknownHostException ถ้า host name ดังกล่าวไม่มี ซึ่งก็จำเป็นที่จะต้องทำการ catch เพื่อแสดงข้อผิดพลาดนี้
โค้ดตัวอย่างการใช้

อ่านต่อ
import java.net.*;
import java.util.*;

public class IPFinder
{
public static void main(String[] args)
{
String host;
Scanner input =new Scanner(System.in);

System.out.print("\n\nEnter host name:");
host =input.next();
try
{
InetAddress address= InetAddress.getByName(host);
System.out.println("IP address:"+address.toString());

}
catch (UnknownHostException uhEX)
{
System.out.println("Could not find"+host);
}
}
}

ผลลัพธ์การรันโปรแกรม