[Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

default [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by Admin on Sun Oct 07, 2012 8:07 pm

- Lưu ý chạy chương trinh Server trước khi chạy chương trình Client.
- Vào cmd gõ "ipconfig" đọc địa chỉ TCP/IP v4 để điền địa chỉ chương trình Server khi chương trình Client cần kết nối:
- Quy ước chung là port: 8080, có thể đổi port bằng cách can thiệp vào code ở Server:
- Đề: Chương trình Client cho phép người dủng nhập vào 1 số gởi lên chương trình Server số đó, Server xử lý và trả về 1 chuỗi và gởi về cho chương trình Client và Client nhận và hiển thị ra màn hình.
- Đây là trao đổi thông tin giữa 2 chương trình bằng Socket
- Có thể chép 2 chương trình ra 2 máy khác nhau rồi cùng kết nối LAN nội bộ hay Internet rồi chạy kết nối 2 chương trình bình thường bằng cách xem địa chỉ TCP?IPV4 nhập cho Client khi cần kết nối Server


Chương trình Server:
Class luồng trong chương trình Server:
Code:


import java.io.*;
import java.net.*;
import java.util.*;

public class ServerNumber extends Thread {

   ServerSocket ss;
   Scanner input;
   PrintWriter output;
   Socket s;
   int port = 7;
   String cs[] = {"Không","Một","Hai","Ba","Bốn","Năm","Sáu","Bảy","Tám","Chín"};
   String s2="Không phải là số nguyên";
   String m;

   public ServerNumber() {
      try {
         ss = new ServerSocket(port);
      } catch (IOException e) {
         // TODO Auto-generated catch block
         output = new PrintWriter(System.out);
         output.println("Server đã được khởi tạo thành công!");
         output.flush();
      }
   }
   public ServerNumber(int p)
   {
      try {
         this.port =p;
         ss = new ServerSocket(port);
      } catch (IOException e) {
         // TODO Auto-generated catch block
         output = new PrintWriter(System.out);
         output.println("Server đã được khởi tạo thành công!");
         output.flush();
      }
   }
   public void Reviced()
   {
      try {
         input = new Scanner(s.getInputStream());
         m = input.nextLine();         
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
   public  void Proscing()
   {   
      
         int v = Integer.valueOf(m).intValue();
         s2="Không phải là số nguyên";
         for(int j=0;j<=9;j++)
            if(v==j) s2 = cs[j];
   }
   public void Send()
   {
      try {
         output = new PrintWriter(s.getOutputStream());
         output.println(s2);
         output.flush();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
   public void run()
   {
      while(true)
      {
         try {
            s = ss.accept();
            Reviced();
            Proscing();
            Send();
         } catch (IOException e) {
            
            e.printStackTrace();
         }
      }
   }

}


Hàm Main của chương trình Server:
Code:

import java.io.*;
public class Main {

   public static void main(String[] args) {
      // TODO Auto-generated method stub
      PrintWriter output = new PrintWriter(System.out);
      output.print("Server đang khởi động...!");
      output.flush();
      ServerNumber S= new ServerNumber(8080);
      S.start();

   }

}


==================================================
Chương trình Client:

Class luồng của Client:
Code:

import java.util.*;
import java.io.*;
import java.net.*;

public class ClientNumber extends Thread {
   Socket s;
   String address = "10.0.3.191";
   Scanner input;
   PrintWriter output;
   int port = 8080;
   String m;
   String s1;
   boolean connected = false;
   public ClientNumber()
   {
   }
   public ClientNumber(String ad, int p)
   {
      this.address = ad;
      this.port = p;
   }
   public void connect()
   {
      try {
         s = new Socket(this.address, this.port);
         this.connected = true;
      } catch (UnknownHostException e) {
      } catch (IOException e) {

      }
   }
   public void disconnect()
   {
      try {
         s.close();
         this.connected = false;
      } catch (IOException e) {
      }
   }
   public void InputString()
   {
      input = new Scanner(System.in);
      output = new PrintWriter(System.out);
      output.print("Nhập vào 1 số: ");
      output.flush();
      m = input.nextLine();
   }
   public void Send()
   {
      try {
         output = new PrintWriter(s.getOutputStream());
         output.println(m);
         output.flush();
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   public void Reviced()
   {
      try {
         input = new Scanner(s.getInputStream());
         s1 = input.nextLine();
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   public void Look()
   {
      output = new PrintWriter(System.out);
      output.println("Kết quả: "+ s1);
      output.flush();
   }

}


Hàm Main của Client:

Code:

import java.io.PrintWriter;
import java.util.Scanner;

public class Main {

   /**
    * @param args
    */
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      String address = "10.0.3.191";
      int port = 8080;
      PrintWriter output = new PrintWriter(System.out);
      Scanner input = new Scanner(System.in);
      output.print("Nhập địa chỉ máy chủ: ");
      output.flush();
      address = input.nextLine();
      output.print("Nhập cổng port: ");
      output.flush();
      port = input.nextInt();
      ClientNumber c = new ClientNumber(address, port);
      while(true){
      c.connect();
      if (c.connected) {
         c.InputString();
         c.Send();
         c.Reviced();
         c.Look();
         c.disconnect();
      } else {
         output.print("Kết nối Server thất bại! ");
         output.flush();
      }
      }
   }

}


Admin

Posts : 1013
Thanked : 47
Gia Nhập 25/08/2010

Tài Sản
Thú nuôi:

http://k4info.forumr.net

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by huynhtai on Tue Oct 09, 2012 11:03 am

Bác Tâm cho hỏi cái này rồi chạy làm sao z? Bác hướng dẫn chi tiết tí dc không? sao thấy mơ hồ quá.... Smile

huynhtai

Posts : 90
Thanked : 3
Gia Nhập 22/09/2011

Tài Sản
Thú nuôi:

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by huynhvantrang on Tue Oct 09, 2012 2:49 pm

Thanks Bác Tâm nhìu. E còn gà môn nè Mad

huynhvantrang

Posts : 4
Thanked : 0
Gia Nhập 14/01/2011

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by mrgen on Tue Oct 09, 2012 3:56 pm

éo chạy được...server not found

mrgen

Posts : 37
Thanked : 1
Gia Nhập 12/09/2011

Tài Sản
Thú nuôi:

http://www.kidgen.tk

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by shippou777 on Tue Oct 09, 2012 4:54 pm

Cao siêu quá bác Tâm oi, không hiểu tongue
-------------
ah hiểu rồi, cái này là server xữ lý song song cùng lúc nhiều yêu cầu từ các client.


shippou777

Posts : 460
Thanked : 8
Gia Nhập 11/10/2011

Tài Sản
Thú nuôi:

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by Admin on Tue Oct 09, 2012 7:34 pm

Em mới chỉ cho Bác Tài, Bác Tài rảnh viết bài hướng dẫn cách chạy chỉ lại cho anh em đi, em làm biến viết bài hướng dẫn. Nếu ai muốn hướng dẫn trực tiếp thì cài TeamViewer 7 rồi đọc pass và id cho em để em hướng dẫn từ xa.. Idea

Admin

Posts : 1013
Thanked : 47
Gia Nhập 25/08/2010

Tài Sản
Thú nuôi:

http://k4info.forumr.net

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by Admin on Tue Oct 09, 2012 7:42 pm

Các bác lưu ý là khi copy code về thì nhớ đổi tên đúng tên Class mà mình tạo nhé.. Chắc nhờ bác Tài viết bài hướng dẫn cho anh em quá, em làm lười viết quá. Còn muốn tư vấn từ xa thì nhá máy em cái em online 01665598343

Admin

Posts : 1013
Thanked : 47
Gia Nhập 25/08/2010

Tài Sản
Thú nuôi:

http://k4info.forumr.net

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by huynhtai on Tue Oct 09, 2012 8:31 pm

Admin đã viết:Em mới chỉ cho Bác Tài, Bác Tài rảnh viết bài hướng dẫn cách chạy chỉ lại cho anh em đi, em làm biến viết bài hướng dẫn. Nếu ai muốn hướng dẫn trực tiếp thì cài TeamViewer 7 rồi đọc pass và id cho em để em hướng dẫn từ xa.. Idea

Bác Tâm chỉ tớ hồi trưa thui..hjhj...có j sai sót a e đừng chém tớ nhe....

đầu tiên các bác tạo 2 cái project:
1 cái server, 1 cái client.
- trong project server: tạo ra 2 class.
+ class thứ 1:copy "Class luồng trong chương trình Server" vào(đặt tên class là "ServerNumber" cho giống bác Tâm, muốn đặt khác cũng dc mà phải vô chương trình sửa tên lại).
+ class thứ 2 là class main: copy "Hàm Main của chương trình Server" cũng tương tự(lưu ý đặt tên là "Main")
chạy thử class main ra dòng "Server đang khởi động...!" là ok!!!
- Trong project client làm tương tự, cũng lưu ý cách đặt tên.(tạo 2 class, copy giống z)
--> chạy thử class main của client:
in ra dòng "Nhập địa chỉ máy chủ: " nhập địa chỉ ip máy vào.nhập xong in ra dòng "Nhập cổng port: " nhập 8080.
ok....

huynhtai

Posts : 90
Thanked : 3
Gia Nhập 22/09/2011

Tài Sản
Thú nuôi:

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by Admin on Tue Oct 09, 2012 8:51 pm

Đa tạ thiếm Tài

Admin

Posts : 1013
Thanked : 47
Gia Nhập 25/08/2010

Tài Sản
Thú nuôi:

http://k4info.forumr.net

Về Đầu Trang Go down

default Re: [Java] trao đổi giữa 2 chương trình bằng Socket. Đề tài đọc số từ Client gởi lên Server

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết