我试图创建一个简单的客户端/服务器套接字通信应用程序(聊天客户端)。我花了无数个小时来看看如何解决这个问题,但仍然没有运气,我可以将消息发送到服务器,但我坚持将消息从服务器发送回客户端。Java服务器套接字响应
我相信问题是我发送回来之后如何从服务器获取消息,我删除了我所拥有的是我无法工作的InputStreamReader。
Server.java
public class Server extends Thread {
@SuppressWarnings("unused")
private static Socket socket;
static int port = 1337;
static ObjectOutputStream output;
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(port);
System.out.println("Server started on port: " + port);
while(!Thread.interrupted()){
try {
Socket clientSocket = ss.accept();
DataInputStream dis = new DataInputStream(clientSocket.getInputStream());
PrintStream output = new PrintStream(clientSocket.getOutputStream());
String str = (String)dis.readUTF();
String[] split = str.split("-");
String subStringUsername = split[0];
String subStringMessage = split[1];
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("h:mm:ss a");
String formattedTimestamp = sdf.format(date);
System.out.println("Message from " + subStringUsername + ": " + subStringMessage + " - at " + formattedTimestamp);
output.flush();
output.println("Message received! Hello client!");
System.out.println("Reply sent");
output.flush();
//TODO create new thread handle new users instead of Thread sleep
//TODO chat commands and user ID/can't be existing user
Thread.sleep(500);
}
catch(Exception e){
System.out.println(e);
}
}
}
getMessage.java
public class GetMessage extends Thread {
public void run(){
while(true) {
InputStreamReader be = new InputStreamReader();
}
}
}
(我提前马虎代码道歉)这是我已经离开我删除了所有的getMessage类在挫折中,我将getMessage作为一个线程运行,我不知道这是最好的方法。我已经尝试了10种方法从服务器获取消息,但仍然没有运气,如果有人能指出我朝着正确的方向,我会非常感激。
不要为马虎代码道歉结束。改进它,然后发布它。 – rzymek
你为什么使用'DataInputStream'?客户端是否也是一个使用'DataOuputStream'发送数据的Java程序?如果不是,那么这可能不起作用,因为'DataInputStream'旨在以编码形式发送Java原始值,而不是通用数据。 –