30/09/2018, 18:40
Code của server-Client
Em có code server bên dưới, em không hiểu sao khi Client gửi dữ liệu đến Server, theo em nghĩ Server xử lý hiển thị dữ liệu xong nó phải chạy đoạn output.println("abc");
và hiển thị lại cho Client là abc chứ tại sao lại không thấy nó gửi lại Client abc ạ? Xin anh chị giải thích hộ em với ạ!
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1.Server;
/**
*
* @author As
*/
//chuyen String sang char
//chuyen String sang char
import java.net.*;
import java.util.*;
import java.io.*;
public class Server
{
public static void main(String[] args)
{
new Server();
}
public Server()
{
//Tao try-catch xu ly loi
try {
ServerSocket sSocket = new ServerSocket(8888);
System.out.println("Server ready at: " + new Date());
//tao luong cho ket noi tu client
Socket socket = sSocket.accept();
//tao luong du lieu
PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//Thong bao client da ket noi thanh cong
output.println("You have connected at: " + new Date());
//Vong lap lam viec Server
while(true) {
//Hien thi cac du lieu tu client gui den
String chatInput = input.readLine();
System.out.println(chatInput);
output.println("abc");
}
} catch(IOException exception) {
System.out.println("Error: " + exception);
}
}
}
Bên Client:
You have connected at: Thu Nov 05 10:01:48 ICT 2015
1
Bên Server:
Server ready at: Thu Nov 05 10:01:43 ICT 2015
1
Bài liên quan
Bạn dùng PrintWriter thì nên dùng
Em chưa hiểu về các
lắm lên nghe anh nói vẫn hơi mơ hộ. Nhưng tạm thời anh cho em hỏi nếu em dùng
output.println("abc");
để gửi trả Client hiển thị abc thế có được không mà sao em thấy nó không chạy gì liên quan vào code đó thế ạ?
Mình chạy code thấy có ghi ra abc bình thường nè bạn.
Mình kết nối bằng telnet.
Nếu bạn không kết nối bằng telnet mà kết nối bằng code Client, thì code đó phải kết nối với output stream của server, nghĩa là cũng phải mở port và nhận dữ liệu y như 1 server vậy.
Đây là code Client ạ. Hình như nó cũng có mở port và nhận dữ liệu y như 1 server mà anh?
Cái bạn dùng chỉ mới là Socket để gửi text đi thôi, lúc nhận dữ liệu thì client cũng đóng vai như 1 server, nên cũng cần 1 ServerSocket để nhận dữ liệu nữa. Nhưng vì bạn dùng vòng while để bắt input từ Client rồi, nên chương trình chạy đến ngang vòng while sẽ đứng yên đó.
Vì thế bạn cần tìm hiểu Thread trong java để đưa vòng while trong Client vào 1 Thread riêng, và việc lắng nghe kết nối vào 1 Thread khác, 2 Thread hoạt động độc lập mới đc.
Anh có thể chỉ giúp em dùng cmd như trên không ạ? em viêt là
không được nốt
bạn ghi
không được anh ạ nó hiện thế này ạ
anh có thể team cho em 1 phát được không ạ?
dấu cách giữa 127.0.0.1 và số 8888 chứ ko phải dấu chám.
Bạn cần mở chức năng telnet trước đã.
stackoverflow.com
Telnet is not recognized as internal or external command
hihihi được rồi ạ. Em cảm ơn anh nhiều nha, có gì mong anh giúp đỡ ạ! Chúc anh một ngày vui vẻ!
Có trang web nào để đẩy server code C # trên máy lên như Heroku thì code Py thôi