客户端-服务器程序不工作
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 Server
Server started listening at port 25000
roomno311@thedestiny:~/Desktop/java$ java Client
上面的代码中间挂了。我需要按 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();
我是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 Server Server started listening at port 25000 roomno311@thedestiny:~/Desktop/java$ java Client
上面的代码中间挂了。我需要按 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();