[英]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.