簡體   English   中英

客戶端-服務器程序不起作用

[英]Client-Server Program does not work

我是Java的新手。 我想進行服務器-客戶端套接字編程。 客戶端在這里發送一條消息,服務器回復該消息。 我寫了以下代碼:

Client.java

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

class Client 
{
    public static void main(String[] args) 
    {
        try
        {
            String host = "localhost";
            Socket socket = new Socket(host,25000);

            OutputStream os = socket.getOutputStream();

            OutputStreamWriter osw = new OutputStreamWriter(os);

            BufferedWriter bufferedwriter = new BufferedWriter(osw);
            String sendMessage = "hello from Client";

            bufferedwriter.write(sendMessage);
            // bufferedwriter.flush();

            InputStream is = socket.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);

            String input = br.readLine();

            System.out.println("The message recieved from server is : "+ input);
            socket.close();


        }
        catch (Exception e) {
            e.printStackTrace();
        }



    }
}

Server.java

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

class Server 
{
    private static Socket socket;
    public static void main(String[] args) 
    {
        try 
        {
            ServerSocket serverSocket = new ServerSocket(25000);
            System.out.println("Server started listening at port 25000");
            socket = serverSocket.accept();

            InputStream is = socket.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);

            String input = br.readLine();

            System.out.println("The message recieved from client is : "+ input);


            OutputStream os = socket.getOutputStream();

            OutputStreamWriter osw = new OutputStreamWriter(os);

            BufferedWriter bufferedwriter = new BufferedWriter(osw);
            String sendMessage = "hello from Server";

            bufferedwriter.write(sendMessage);
            bufferedwriter.flush();


            socket.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

程序的輸出如下所示:

roomno311 @ thedestiny:〜/ Desktop / java $ java服務器服務器開始偵聽端口25000 roomno311 @ thedestiny:〜/ Desktop / java $ java客戶端

上面的代碼介於兩者之間。 我需要按Ctrl + C來關閉這些程序。 請幫我解決這個問題。

客戶端程序中的readLine語句期望從服務器發送以換行符\\n終止的相應字符串。

由於使用的是BufferedWriter,因此也可以使用newLine方法,如下所示。

在您的客戶端中,之后: String sendMessage = "hello from Client";

采用:

bufferedwriter.write(sendMessage);
bufferedwriter.newLine();
bufferedwriter.flush();

同樣在您的服務器代碼之后: String sendMessage = "hello from Server";

用戶:

bufferedwriter.write(sendMessage);
bufferedwriter.newLine();
bufferedwriter.flush();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM