CÔNG VIỆC CỦA CHÚNG TÔI

+ Đào tạo & hỗ trợ thi & Cấp chứng chỉ Ứng dụng CNTT cơ bản, nâng cao
+ Cung cấp dịch vụ Thiết kế - Lập trình web
+ Các giải pháp triển khai - quản trị hệ thống mạng doanh nghiệp
+ ĐÀO TẠO CHUYÊN NGHIỆP: LẬP TRÌNH (C, .Net, ASP.net, PHP, Thiết kế Đồ họa
Hiển thị các bài đăng có nhãn Lập trình mạng. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Lập trình mạng. Hiển thị tất cả bài đăng
Xây dựng ứng dụng client/server DateTime

Xây dựng ứng dụng client/server DateTime

DateTimeServer

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
/**
 * A TCP server that runs on port 9090.  When a client connects, it
 * sends the client the current date and time, then closes the
 * connection with that client.  Arguably just about the simplest
 * server you can write.
 */
public class DateServer {

    /**
     * Runs the server.
     */
    public static void main(String[] args) throws IOException {
        ServerSocket listener = new ServerSocket(9090);
        try {
            while (true) {
                Socket socket = listener.accept();
                try {
                    PrintWriter out =
                        new PrintWriter(socket.getOutputStream(), true);
                    out.println(new Date().toString());
                } finally {
                    socket.close();
                }
            }
        }
        finally {
            listener.close();
        }
    }
}

DateTime Client 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import javax.swing.JOptionPane;
/**
 * Trivial client for the date server.
 */
public class DateClient {

    /**
     * Runs the client as an application.  First it displays a dialog
     * box asking for the IP address or hostname of a host running
     * the date server, then connects to it and displays the date that
     * it serves.
     */
    public static void main(String[] args) throws IOException {
        String serverAddress = JOptionPane.showInputDialog(
            "Enter IP Address of a machine that is\n" +
            "running the date service on port 9090:");
        Socket s = new Socket(serverAddress, 9090);
        BufferedReader input =
            new BufferedReader(new InputStreamReader(s.getInputStream()));
        String answer = input.readLine();
        JOptionPane.showMessageDialog(null, answer);
        System.exit(0);
    }
}

Lập trình mạng TCP Socket (1)

 


Bài 1
Đề bài: Tạo ra hai ứng dụng độc lập (một client và một server). Client chấp nhận một trong các số sau: 1, 2, 3. Số này sẽ được gửi đến server. Server sẽ trả lại tương ứng : “ONE” hoặc “TWO” hoặc “THREE” (tùy theo số nhận được). Dùng giao thức TCP/IPChức năng chương trình:- Client gửi số bất kì đến SERVER
- Nếu là số 1,2,3 thì trả về ONE,TWO,THREE, các trường hợp còn lại trả về UNKNOWN
Cơ chế:- SERVER mở cổng để client truy xuất đến
- Tạo các luồng nhập xuất khi có client truy cập đến (cả client và SERVER), lúc này client và server có thể gửi thông tin qua lại lẫn nhau
- Client truy cập vào, sau đó gửi thông tin đến server
- Server nhận được thông tin, rồi xử lí, sau đó gửi trả lại client
- Client hiển thị thông tin mà server đã trả về


Các lớp và chức năng các lớp:
NumberTCPSimpleServer

- Lớp này có phương thức go(), chức năng của nó:
o Mở cổng của server, tạo kết nối mỗi khi có client kết nối
o Chờ nhận dữ liệu từ Client gửi lêno Xử lí dữ liệu
o Trả về client

- Phương thức main của lớp này tạo ra đối tượng thuộc lớp 
NumberTCPSimpleServer, sau đó gọi phương thức go() của lớp này

Giao tiếp kết thúc nếu nhận được chuỗi "bye"

NumberTCPSimpleClient

- Phương thức khởi tạo của lớp này có đối số là chuỗi về địa chỉ của server
- Phương thức go():

o Tạo kết nối đến địa chỉ và số hiệu cổng của server
o Tạo các luồng nhập xuất liên kết với server
o Đưa dữ liệu cần gửi hoặc nhận vào các luồng này
o Gửi dữ liệu đến server
o Nhận dữ liệu (sau khi server đã xử lí) rồi hiển thị lên màn hìn
Giao tiếp kết thúc nếu nhận được chuỗi "bye"

FULL CODE
# NumberTCPSimpleServer .Java 
import java.io.*; 
import java.net.ServerSocket;
import java.net.Socket;
public class NumberTCPSimpleServer {
public static void go() throws IOException {
// Bước 1: Khởi tạo một đối tượng ServerSocket để nghe yêu
// cầu kết nối từ client
// cổng lắng nghe là 9999
ServerSocket socServer = new ServerSocket(9999);
System.out.println("Server in running, on port 9999");
while (true)
{
// Bước 2: Chấp nhận kết nối từ client gửi đến
Socket socClient  = socServer.accept();
System.out.println("Accept client IP:" +  socClient.getInetAddress());
System.out.println("We will working on port:" +  socClient.getPort());
   // Bước 3: lấy các luồng nhập/ xuất để làm việc với client
  // Luồng nhập  từ socket
  InputStream input = socClient.getInputStream();
  InputStreamReader ipR = new InputStreamReader(input);
  BufferedReader buffR= new BufferedReader(ipR);
  
  // Luồng xuất ra socket
  OutputStream ouput = socClient.getOutputStream();
  OutputStreamWriter outW = new OutputStreamWriter(ouput);
  BufferedWriter  buffW = new BufferedWriter(outW);
// Bước 4. Tiến hành giao thức trao đổi dữ liệu
  while (true)
  {
  //(1). Lấy số từ client gửi tới
  String dulieu_Den = buffR.readLine();
  System.out.println(dulieu_Den);
  if (dulieu_Den.compareTo("bye")==0) break;
  //(2). Tính toán kết quả trả về
  String dulieu_Di="UNKNOWN";
  if (dulieu_Den.compareTo("1")==0) dulieu_Di="ONE";
  if (dulieu_Den.compareTo("2")==0) dulieu_Di="TWO";
  if (dulieu_Den.compareTo("3")==0) dulieu_Di="THREE";
  //(3). Gửi về cho client
  buffW.write(dulieu_Di); buffW.newLine(); 
  buffW.flush();
  }
   // Bước 5. Đóng socket
socClient.close();   
}
}
public static void main(String[] args) {
try {
go();
} catch (IOException e) {
e.printStackTrace();
}
}

}

File  NumberTCPSimpleClient .java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class NumberTCPSimpleClient {

public static void go() throws UnknownHostException, IOException
{
//Bước 1: Khởi tạo một đối tượng Socket để kết nối với server
Socket soc = new Socket("localhost",9999);
// Bước 2: 
 // Luồng nhập  từ socket
  InputStream input = soc.getInputStream();
  InputStreamReader ipR = new InputStreamReader(input);
  BufferedReader buffR= new BufferedReader(ipR);
  
  // Luồng xuất ra socket
  OutputStream ouput = soc.getOutputStream();
  OutputStreamWriter outW = new OutputStreamWriter(ouput);
  BufferedWriter  buffW = new BufferedWriter(outW);
    // Bước 3, tiến hành giao thức
      //(0) chuẩn bị
         String dulieu_Di="";
         String dulieu_Den="";
         BufferedReader banPhim = new BufferedReader( 
                               new InputStreamReader(System.in)); 
  
      // Thực hiện
         while (true)
         {
         System.out.println("Mời nhập số (bye để dừng):");
         String dulieu = banPhim.readLine();
         if (dulieu_Den.compareTo("bye")==0) break;
         
         //Gửi đi
         dulieu_Di = dulieu;
         buffW.write(dulieu_Di); buffW.newLine();
         buffW.flush();
         // Lấy về
         dulieu_Den = buffR.readLine();
         System.out.println(dulieu_Den);
         }
// Bước 4. Đóng kết nối
         soc.close();
}
public static void main(String[] args) {
try {
go();
} catch (IOException e) {
e.printStackTrace();
}
}

}

Lập trình mạng - Lấy giờ Internet

Lập trình mạng - Lấy giờ Internet

Bài hướng dẫn lập trình socket client, lấy giờ chuẩn được cấp bới
Host: time.nist.gov
cổng dịch vụ số: 13
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class LayGio {
public static void main(String[] args) {
try {
Socket sc = new Socket("time.nist.gov",13);
//System.out.println("Kết nối TCP thành công");
InputStream input = sc.getInputStream();
InputStreamReader ipR = new InputStreamReader(input);
BufferedReader buff = new BufferedReader(ipR);
// đọc luông và in ra
while (true) {
String line = buff.readLine();
if (line ==null)  break;
else 
System.out.println(line);
}
// đóng socket
sc.close();
} catch (UnknownHostException e) {
System.out.println("Không phân giải được tên");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Server không chấp nhận kết nối"); 
e.printStackTrace();
}
}
}

Thực hành Lập trình mạng - URL - Bài 3 - Download mã HTML

Thực hành Lập trình mạng - URL - Bài 3 - Download mã HTML

Chương trình download mã HTML một trang web và lưu lên máy
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class DownloadHTMLFile {

public static void main(String[] args) {
// TODO Auto-generated method stub
try {
URL u = new URL("http://centrasd.edu.vn");
// Lấy về luồng nhập
InputStream inputWeb = u.openStream();
// Xử lý luồng, và in ra màn hình
InputStreamReader reader = new InputStreamReader(inputWeb);
BufferedReader buff = new BufferedReader(reader);
FileWriter fw = new FileWriter("e:\\abc.html");
BufferedWriter dau_ghi = new BufferedWriter(fw);
while (true) {
String line = buff.readLine();
if (line ==null)  break;
else{
dau_ghi.write(line);
dau_ghi.newLine();
}
}
} catch (MalformedURLException e) {
System.out.println("Định dạng URL bị sai"); 
} catch (IOException e) {
System.out.println("Lỗi khi truy xuất luồng"); 
}
}
}
 
Thực hành Lập trình mạng - URL - Bài 2 - Đọc mã HTML

Thực hành Lập trình mạng - URL - Bài 2 - Đọc mã HTML

Viết chương trình liệt kê toàn bộ nội dung của bất kì trang web nào trên netChức năng chương trình:- Hiển thị thông tin toàn bộ trang web của bất kì trang web nào dưới dạng text đơn thuần
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class DocNoiDungTrangWeb {

public static void main(String[] args) {
// TODO Auto-generated method stub
try {
URL u = new URL("http://centrasd.edu.vn");
// Lấy về luồng nhập
InputStream inputWeb = u.openStream();
// Xử lý luồng, và in ra màn hình
InputStreamReader reader = new InputStreamReader(inputWeb);
BufferedReader buff = new BufferedReader(reader);
while (true) {
String line = buff.readLine();
if (line ==null)  break;
else 
System.out.println(line);
}
} catch (MalformedURLException e) {
System.out.println("Định dạng URL bị sai"); 
 } catch (IOException e) {
System.out.println("Lỗi khi truy xuất luồng"); 
}
}
}
 
Thực hành lập trình mạng-URL- bài 1

Thực hành lập trình mạng-URL- bài 1

Đề bài: Viết chương trình xử lí chuỗi nhập, dùng nó để khởi tạo đối tượng URL và trả về thuộc tính của nó 
Chức năng chương trình:- Truy cập vào URL, sau đó in các thông tin của tài nguyên như:o Tên fileo Tên hosto Số hiệu cổngo Kiểu giao thức (https hoặc http hoặc ftp…)

import java.net.*;
import java.util.Scanner;

public class URL_Bai1 {

public static void main(String[] args) {
Scanner banphim = new Scanner(System.in);
System.out.println("Nhập tên file");
String tenfile = banphim.nextLine();
System.out.println("Nhập tên host");
String tenHost= banphim.nextLine();
System.out.println("Số hiệu cổng");
int soCong= Integer.parseInt( banphim.nextLine() );   // ĐỔi chuỗi thành số
System.out.println("Giao thức");
String giaothuc = banphim.nextLine();
try {
URL u = new URL(giaothuc,tenHost, soCong, tenfile);
System.out.println("Giao thức: "+u.getProtocol());
System.out.println("Host: "+u.getHost());
System.out.println("Cổng: "+u.getPort());
System.out.println("File: "+u.getFile());
System.out.println("Full Path: "+u.getPath());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}