Thắc mắc về Socket?

Chào các ace! Mình mới học về Socket và có một bài tập là tạo 1 server và chờ client gửi 2 số đến và trả về tổng của 2 số đó.
Vấn đề là mình k biết làm sao để lấy 2 số từ client ở server nên mình xử lý cái tổng ở client luôn. Ai chỉ mình cách lấy 2 số nhập vào từ client từ server với ạ!
Mình cám ơn!

//Class CLIENT
		Socket soc = new Socket("localhost",5511);
		PrintStream out = new PrintStream(soc.getOutputStream(),true);
		//Cho nhập vào 2 số
		Scanner sn = new Scanner(System.in);
		int num1 = sn.nextInt();
		int num2 = sn.nextInt();
		sn.nextLine();
		int tong = num1 + num2;//Tính tổng 2 số
		String chuoi = String.valueOf(tong);// Đổi thành chuỗi
		
		out.println(chuoi);
		//đọc kết quả
		Scanner in = new Scanner(soc.getInputStream());
		String res = in.nextLine();
		
		System.out.println(res);
		in.close();
		out.close();
		soc.close();
//class SERVER
		ServerSocket svs = null;
		try {
			svs = new ServerSocket(5131);
			boolean state = true;
			while(state) {
				Socket socket = svs.accept();
				Scanner sc = new Scanner(socket.getInputStream());			
				String request = sc.nextLine();
				String respone = request.toString();
				PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
				out.println(respone);
				
				out.close();
				sc.close();
				socket.close();
			}
		}catch(Exception e) {
			e.printStackTrace();
		}
		finally {
			if(svs!=null)
				svs.close();
		}

Bạn thực hiện từng bước.
Trước tiên là thử nghiệm xem kết nối giữa server và client có hoạt động ổn định hay không.

Có thể thử bằng cách nhập vào 1 string ở client
→ client gửi string đó đến server
→ server print string đó ra xem đúng không,
→ xong server gửi lại client một chuỗi nào đó,
→ client print string đó ra xem đúng không,
→ rồi đóng kết nối.

Sau khi biết được kết nối giữa server và client hoạt động tốt rồi, thì đến bước tiếp theo là tìm cách gửi 2 số từ client đến server.

Để gửi 2 số từ client đến server thì có nhiều cách.

Bạn có thể gửi 2 lần, mỗi lần 1 số.
Sau khi server nhận được đủ 2 số thì tính toán rồi trả kết quả về.

Hồi xưa mình làm thì mình ghép thành chuỗi để gửi đi cho tiện.
→ Ví dụ mình có 2 số là 10050,
→ thì mình ghép thành string: 100#50 (bạn thích dùng ký tự nào thì tùy)
→ Khi string được gửi tới server, server ngắt chuỗi ra theo ký tự # thì được 1 array có 2 phần tử là 10050,
→ lúc đó lấy giá trị trong array ra, tính toán rồi gửi lại client kết quả thôi.

Xong bài này sẽ tới bài nâng cao hơn, là client gửi 2 số và phép tính (cộng, trừ, nhân, chia) đến server, thì cũng làm tương tự vậy: 100#50#+, 100#50#-, 100#50#*, 100#50#/

6 Likes

cám ơn bạn! :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?