intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng lập trình java - Bài 9

Chia sẻ: Nguyen Van Nam | Ngày: | Loại File: PDF | Số trang:11

117
lượt xem
33
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Socket là một trong những kỹ thuật cơ bản nhất trong truyền thông trên mạng máy tính. Socket là một phương thức thực hiện truyền thông giữa các tiến trình được BSD đề xuất.

Chủ đề:
Lưu

Nội dung Text: Bài giảng lập trình java - Bài 9

  1. Bài gi ng L P TRÌNH JAVA Lê ðình Thanh B môn M ng và Truy n thông Máy tính Khoa Công ngh Thông tin Trư ng ð i h c Công ngh , ðHQGHN 1 Lê ðình Thanh, L p trình socket Bài 9 L p trình socket 2 Lê ðình Thanh, L p trình socket
  2. N i dung • Truy n thông gi a các ng d ng • Socket • L p trình socket ða lu ng • 3 Lê ðình Thanh, L p trình socket Truy n thông gi a các ng d ng ng d ng A1 ng d ng B1 Chào B1. Tôi là A1. B n c n nói chuy n không Chào A1. Tôi s n sàng Tôi c n … ðây là th b n c n … C m ơn nhi u nhé. H n g p l i Ok. H n g p l i Máy A Máy B 4 Lê ðình Thanh, L p trình socket
  3. Truy n thông gi a các ng d ng M t ng d ng (B1) ph i ch y trư c, ch xem có ng d ng • khác c n giao ti p không ng d ng c n giao ti p (A1) thi t l p k t n i ñ n ng d ng • l ng nghe (B1) Hai bên bàn th o v m t vi c gì ñó (theo giao th c) • A1/B1 mu n k t thúc s chào t m bi t trư c, B1/A1 s t m • bi t l i 5 Lê ðình Thanh, L p trình socket Truy n thông gi a các ng d ng ng d ng A1 ng d ng B1 Chào B1. Tôi là A1. B n c n nói chuy n không ng d ng A2 ng d ng B2 Chào A1. Tôi s n sàng Chào B2. Tôi là A2. B n c n nói chuy n không Tôi c n … Chào A2. Tôi s n sàng ðây là th b n c n Tôi c n … … C m ðn nhi th nhé.nH n g p l i ơ ây là u b c … Ok. H n g p l i C m ơn nhi u nhé. H n g p l i Máy B Máy A Ok. H n g p l i 6 Lê ðình Thanh, L p trình socket
  4. Truy n thông gi a các ng d ng Nhi u ng d ng có th ch y ñ ng th i trên m t máy, s • d ng cùng ñ a ch IP → Làm th nào ñ phân bi t ñư c gói tin ñ n g i cho ng d ng nào? • Gi i pháp: M i ng d ng s d ng m t mã riêng bi t là m t s nguyên không âm ñư c g i là c ng (port). • Khi ng d ng bên ngoài c n g i cho ng d ng B1, nó ph i g i c IP c a máy B và mã nh n di n c a B1 trong gói d li u. • Khi ng d ng bên ngoài c n g i cho ng d ng B2, nó ph i g i c IP c a máy B và mã nh n di n c a B2 trong gói d li u. •… IP:port - ð a ch /ñ nh danh/socket c a ng d ng • 7 Lê ðình Thanh, L p trình socket Socket IP:port - ð a ch /ñ nh danh/socket c a ng d ng • Khi ng d ng s d ng c ng nào, nó s ñăng ký v i h ñi u • hành N u c ng ñã ñư c s d ng, h ñi u hành s báo là không • th s d ng ñư c, ng d ng s d ng ch y ho c xin c ng khác. • Trong l p trình java: • ng d ng l ng nghe s d ng ServerSocket và Socket ng d ng kh i ñ ng k t n i s d ng Socket • 8 Lê ðình Thanh, L p trình socket
  5. L p trình socket 9 Lê ðình Thanh, L p trình socket ð i tư ng Socket M i ñ i tư ng Socket có: • M t dòng ra: lưu d li u s g i cho ñ i tác nhưng chưa ñư c g i • Các phương th c g i d li u = ñưa d li u ra dòng ra, ñ y d li u • cho t ng giao v n (g i) M t dòng vào: lưu d li u do ñ i tác g i ñ n • Các phương th c nh n d li u = ñ c d li u t dòng vào • Output Input Sream Stream Socket Socket TCP/UDP Input Output Stream Sream Network 10 Lê ðình Thanh, L p trình socket
  6. ServerSocket //T o server socket l ng nghe trên c ng 8080 ServerSocket ssoc = new ServerSocket(8080); //Ch p nh n k t n i Socket soc = ssoc.accept(); 11 Lê ðình Thanh, L p trình socket Socket //T o k t n i ñ n server socket l ng nghe trên c ng 8080 máy có IP 113.202.99.8 Socket soc = new Socket(“113.202.99.8”, 8080); //Tham chi u ñ n dòng vào và dòng ra c a socket InputStream sin = soc.getInputStream(); OutputStream sout = soc.getOutputStream(); DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); //G i d li u cho ñ i tác out.writeUTF(“N i dung”); out.flush(); //ð c d li u do ñ i tác g i ñ n String text = in.readUTF(); 12 Lê ðình Thanh, L p trình socket
  7. Giao th c t ng ng d ng M t ng d ng (B1) ph i ch y trư c, ch xem có ng d ng • khác c n giao ti p không ng d ng c n giao ti p (A1) thi t l p k t n i ñ n ng d ng • l ng nghe (B1) • Hai bên bàn th o v m t vi c gì ñó (theo giao th c) A1/B1 c n k t thúc s chào t m bi t trư c, B1/A1 s t m • bi t l i • Giao th c cho ng d ng cho bi t th t , ki u n i dung các bư c g i/nh n c a m i bên 13 Lê ðình Thanh, L p trình socket Ví d : Giao th c xưng danh B ch ngư i ñ n • • A xu t hi n • Vui lòng cho bi t tên c a b n • Tên tôi là A • Ghi nh n tên • Vui lòng cho bi t ngày sinh c ab n • Tôi sinh ngày 25/12/1990 • Ghi nh n ngày sinh • Xin chào A, sinh ngày 25/12/1990. • Nh n l i chào • K t thúc • K t thúc 14 Lê ðình Thanh, L p trình socket
  8. Phía ghi danh (B) //lang nghe tren cong 8080 ServerSocket ssoc = new ServerSocket(8080); System.out.print("Running"); //chap nhan ket noi Socket soc = ssoc.accept(); //tham chieu den cac dong vao va dong ra InputStream sin = soc.getInputStream(); OutputStream sout = soc.getOutputStream(); DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); //////////////////////////////// thuc hien giao thuc xung danh //////////////////////////////// //yeu cau cho biet ten out.writeUTF("Your name: "); out.flush(); //ghi nhan ten String name = in.readUTF(); //yeu cau cho biet ngay sinh out.writeUTF("Your DOB: "); out.flush(); //ghi nhan ngay sinh String dob = in.readUTF(); //thong bao da ghi nhan xong out.writeUTF("Welcome " + name + " whose DOB is " + dob + "\n"); out.flush(); //ket thuc in.close(); out.close(); soc.close(); 15 Lê ðình Thanh, L p trình socket Phía xưng danh (A) //thiet lap ket noi Socket soc = new Socket("127.0.0.1", 8080); //tham chieu den cac dong vao va dong ra InputStream sin = soc.getInputStream(); OutputStream sout = soc.getOutputStream(); DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); //////////////////////////////// thuc hien giao thuc xung danh /////////////////////////////////// //doc yeu cau (cho biet ten) String text = in.readUTF(); System.out.print(text); //mo mot input stream cho ban phim Scanner scanner = new Scanner(new BufferedReader(new InputStreamReader(System.in))); scanner.useDelimiter("\n"); //nhap ten tu ban phim String name = scanner.next(); //gui ten out.writeUTF(name); out.flush(); //doc yeu cau nhap ngay sinh text = in.readUTF(); System.out.print(text); //nhap ngay sinh tu ban phim String dob = scanner.next(); //gui ngay sinh out.writeUTF(dob); out.flush(); //doc thong bao da ghi nhan text = in.readUTF(); 16 System.out.print(text); Lê ðình Thanh, L p trình socket //ket thuc in.close();
  9. ða lu ng (Multi-threading) 17 Lê ðình Thanh, L p trình socket ða lu ng M t server có th ph i giao ti p ñ ng th i v i nhi u clients • • V i m i client, server ph i ch p nh n m t k t n i và th c hi n giao th c ng d ng trên m t lu ng → server ph i tao nhi u lu ng x lý ñ ng th i, m i lu ng • th c hi n m t k t n i ñ n m t client 18 Lê ðình Thanh, L p trình socket
  10. Phía ghi danh – T o lu ng public class MyThread extends Thread { private Socket soc; public MyThread(Socket socket) { super("MyThread"); this.soc = socket; } … 19 Lê ðình Thanh, L p trình socket Phía ghi danh – T o lu ng public void run() { try { //tham chieu den cac dong vao va dong ra InputStream sin = soc.getInputStream(); OutputStream sout = soc.getOutputStream(); DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); ////////////// thuc hien giao thuc xung danh /////////////////////// //yeu cau cho biet ten out.writeUTF("Your name: "); out.flush(); //ghi nhan ten String name = in.readUTF(); //yeu cau cho biet ngay sinh out.writeUTF("Your DOB: "); out.flush(); //ghi nhan ngay sinh String dob = in.readUTF(); //thong bao da ghi nhan xong out.writeUTF("Welcome " + name + " whose DOB is " + dob + "\n"); out.flush(); //ket thuc in.close(); out.close(); 20 soc.close(); Lê ðình Thanh, L p trình socket }
  11. Phía ghi danh – Chương trình chính public static void main(String[] args) { try { java.net.ServerSocket ssoc = new ServerSocket(8080); System.out.print("Running"); int count = 0; while (true) { Socket soc = ssoc.accept(); MyThread newthread = new MyThread(soc); newthread.start(); count ++; System.out.println("\nClient: " + count); } } catch(Exception e) { System.out.print(e); 21 } } Lê ðình Thanh, L p trình socket Ti p theo Tri n khai ng d ng 22 Lê ðình Thanh, L p trình socket
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2