मैं जावा में चैटप्रोग्राम बनाने की कोशिश कर रहा हूं, जब मैं क्लाइंट पक्ष पर संदेश भेजता हूं तो सर्वर पक्ष को संदेश मिलता है। लेकिन जब मैं सर्वर से सर्वर पर भेजता हूं तो उसे संदेश नहीं मिलता है।सर्वर से क्लाइंट को संदेश भेजने के लिए
मैं नहीं देख सकता कि मैं क्या गलत कर रहा हूं।
सर्वर साइड कोड:
private void serverStart(){
textArea.append("Starting server " + " \n");
try {
serverSocket = new ServerSocket(4444);
textArea.append("Waiting for Clients " + " \n");
//Reading message from the client
socket = serverSocket.accept();
textArea.append("Client Connected " + "\n");
//Send message to client
out = new PrintWriter(socket.getOutputStream());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (true)
{
messageFromClient = in.readLine();
whileChat(messageFromClient);
}
} catch(IOException ioExecption) {
ioExecption.printStackTrace();
}
}
private void whileChat(String messageFromClient) {
showMessage(messageFromClient);
System.out.println("Message from client : " + messageFromClient);
}
protected static void showMessage(final String message) {
SwingUtilities.invokeLater(
new Runnable(){
public void run()
{
Gui.consoleTextArea.append(message + "\n");
}
});
}
public static void sendMessage(String message) {
out.println(message);
showMessage(name + " : " + message + "\n");
}
क्लाइंट साइड:
private void connectToServer() {
try {
socket = new Socket("localhost", 4444);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Thread clientThread = new Thread(new Runnable() {
@Override
public void run() {
try {
// attach to socket's output stream with auto flush turned on
//Send message to the server
out = new PrintWriter(socket.getOutputStream(),
true);
//Get return message from server
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
messageFromServer = in.readLine();
whileChatting(messageFromServer);
} catch (Exception e) {
e.printStackTrace();
}
}
});
clientThread.start();
}
private void whileChatting(String messageFromServer) {
showMessage(messageFromServer);
System.out.println("Message from server to client " + messageFromServer);
}
public static void Send(String msg) {
out.println(name + " : " + msg);
showMessage(name + " : " + msg + "\n");
}
protected static void showMessage(final String message) {
SwingUtilities.invokeLater(
new Runnable(){
public void run(){
Gui.consoleTextArea.append(message);
}
});
}
आशा किसी को इस समस्या के साथ मेरी मदद कर सकता है।
क्या आपको 'क्लाइंट कनेक्टेड' संदेश दिखाई देता है? – slartidan
लिखने के तुरंत बाद 'out.flush()' पर कॉल करने में मदद मिल सकती है। –
हां, मैं क्लाइंट से जुड़े संदेश को देखता हूं, बाहर। फ्लश कॉल की आवश्यकता होती है जब आप PrintWriter में सत्य रखते हैं? – tinaw25