- import java.io.*;
- import java.net.*;
- import java.util.*;
- class TCPClient {
- public static void main(String argv[]) throws Exception
- {
- String sentence;
- String modifiedSentence;
- Scanner inFromUser = null;
- Socket clientSocket = null;
- DataOutputStream outToServer = null;
- Scanner inFromServer = null;
- try {
- inFromUser = new Scanner(System.in);
- clientSocket = new Socket("localhost", 6789);
- outToServer =
- new DataOutputStream(clientSocket.getOutputStream());
- inFromServer = new Scanner(clientSocket.getInputStream());
- System.out.print("Please enter words: ");
- sentence = inFromUser.nextLine();
- outToServer.writeBytes(sentence + '\n');
- modifiedSentence = inFromServer.nextLine();
- System.out.println("FROM SERVER: " + modifiedSentence);
- }
- catch (IOException e) {
- System.out.println("Error occurred: Closing the connection");
- }
- finally {
- try {
- if (inFromServer != null)
- inFromServer.close();
- if (outToServer != null)
- outToServer.close();
- if (clientSocket != null)
- clientSocket.close();
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
บรรทัดที่ 15 เป็นการสร้างซ็อกเก็ตเชื่อมต่อ (Connection Socket) ให้สังเกตว่าเราใช้ชื่อโฮสต์คือ localhost เพราะโปรแกรมตัวอย่างของเราเราจะรันโปรแกรมเซิร์ฟเวอร์และไคลเอนต์บนเครื่องเดียวกัน ในกรณีที่รันโปรแกรมเซิร์ฟเวอร์บนเครื่องอื่น ให้ระบุชื่อหรือหมายเลขไอพีของเครื่องดังกล่าว หมายเลขพอร์ตใช้หมายเลขที่โปรแกรมเซิร์ฟเวอร์รอรับการติดต่ออยู่ ในที่นี้ใช้ 6789 เพราะโปรแกรมเซิร์ฟเวอร์ที่เราเขียนขึ้นในบทความที่แล้วใช้หมายเลขพอร์ตนี้ บรรทัดที่ 16-17 สร้างสตรีมผลลัพธ์สำหรับเขียนข้อมูลลงซ็อกเก็ต บรรทัดที่ 18 สร้างสตรีมเพื่อรับข้อมูลจากซ็อกเก็ต บรรทัดที่ 21 เขียนข้อมูลลงซ็อกเก็ตเพื่อส่งให้เซิร์ฟเวอร์ บรรทัดที่ 22 รอรับข้อมูลที่เซิร์ฟเวอร์จะส่งกลับมา finally clause บรรทัดที่ 28-35 ปิดสตรีมทุกตัว และซ็อกเก็ตเชื่อมต่อ
สำหรับโปรแกรมต้นฉบับ (source code) สามารถโหลดได้จากลิงก์นี้ครับ ถ้าใครโหลดจาก gitlab ไปเมื่อบทความที่แล้ว ก็จะได้โค้ดโปรแกรมไปแล้วนะครับ ไม่ต้องโหลดใหม่ครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น