【发布时间】:2015-09-16 10:02:47
【问题描述】:
我正在编写一个使用 Java Socket 的服务器、客户端聊天程序。这是我的服务器套接字类的代码。
import java.io.*;
import java.net.*;
public class Main {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8085);
} catch (IOException ex) {
System.out.println("IO Error, " + ex);
System.exit(1);
}
Socket clientSocket = null;
System.out.println("Listening for incoming connections");
try {
clientSocket = serverSocket.accept();
} catch (IOException ex) {
System.out.println("Failed to accept connection " + ex);
System.exit(1);
}
System.out.println("Connection Successful");
System.out.println("Listening to get input");
PrintStream output = new PrintStream(clientSocket.getOutputStream(), true);
BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while ((inputLine = input.readLine()) != null) {
System.out.println(inputLine);
System.out.println("Server: ");
inputLine = input.readLine();
output.println(inputLine);
if (!inputLine.equals("exit")) {
} else {
break;
}
}
output.close();
input.close();
clientSocket.close();
serverSocket.close();
}
}
客户端能够建立连接并向服务器发送消息。服务器也可以接收客户端发送的消息。问题是当消息从服务器发送时,客户端没有收到消息。这是我的客户端套接字代码。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class Client {
public static void main(String [] args) throws Exception
{
BufferedReader input;
PrintStream output;
BufferedReader clientInput;
try (Socket client = new Socket("127.0.0.1", 8085)) {
input = new BufferedReader(new InputStreamReader(client.getInputStream()));
output = new PrintStream(client.getOutputStream());
clientInput = new BufferedReader(new InputStreamReader(System.in));
String line;
while(true)
{
System.out.println("Client: ");
line = clientInput.readLine();
output.println("Server: " + line );
if(line.equals("quit"))
{
break;
}
}
}
input.close();
clientInput.close();
output.close();
}
}
【问题讨论】:
-
请与我们分享到目前为止您是如何尝试解决问题的。
-
这里有 很多 问题关于使用套接字在 Java 中聊天。我searched(在本页顶部的搜索框中)搜索
chat java socket,找到了数百个结果。 -
@StephenP 如果您提供指向具有类似协议问题的特定问题的链接,我会将其标记为重复项。套接字是通用的,程序员可能遇到的问题有很多细微差别。这是一个协议序列问题的例子。
-
@AlainO'Dea 我打算以重复的方式结束投票,但我找不到(在我有空的短时间内)一个适当的结束问题;但我确实发现了很多我认为对 OP 有帮助的东西,所以我决定建议他搜索。