服务器未显示来自客户端的消息(JAVA)
我要传达一个信息:服务器未显示来自客户端的消息(JAVA),java,sockets,server,Java,Sockets,Server,我要传达一个信息: newbie:hi 文本显示在服务器控制台=>服务器接收到它,但当我回显时,为了将相同的消息打印到我的textclient控制台,它不会显示这是我的回显代码,下面您还可以看到来自textclient的代码:(我做错了什么?它通常应该显示我从textclient发送的消息)方法getAll()返回一个包含消息和发件人的字符串 public void serverEcho() { try { ObjectI
newbie:hi
文本显示在服务器控制台=>服务器接收到它,但当我回显时,为了将相同的消息打印到我的textclient控制台,它不会显示这是我的回显代码,下面您还可以看到来自textclient的代码:(我做错了什么?它通常应该显示我从textclient发送的消息)方法getAll()返回一个包含消息和发件人的字符串
public void serverEcho() {
try {
ObjectInputStream objectin = new ObjectInputStream(_Socket
.getInputStream());
Message newmess = (Message) objectin.readObject();
System.out.println(newmess.getAll());
} catch (IOException e) {e.printStackTrace();
} catch (ClassNotFoundException e) {e.printStackTrace();
}
}
这是TextClient:
import java.io.*;
import java.net.*;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
public class TextClient {
public TextClient() {
}
public static void main(String[] args) throws IOException,
UnknownHostException, ConnectException, InterruptedException {
Socket _socket = new Socket("localhost", 9000);
System.out.println("Please enter your desired username:");
Scanner _new = new Scanner(System.in);
String _inputname = _new.nextLine();
System.out.println("Success.You can now type your messages!");
ClientPeer _clientpeer = new ClientPeer(_inputname, _socket);
Scanner _scan = new Scanner(System.in);
String _input = _scan.nextLine();
while (true) {
if (!_input.equals("exit")) {
if (_input.startsWith("/w"))
_clientpeer.sendMessage(_input, "username");
else {
_clientpeer.sendMessage(_input);
_clientpeer.serverEcho();
}
} else
break;
_input = _scan.nextLine();
}
}
}
客户端对等类:
import java.net.*;
import java.io.*;
public class ClientPeer{
String _username;
static Socket _Socket;
public ClientPeer(String _username, Socket _Socket)
{
this._username = _username;
this._Socket = _Socket;
}
public void sendMessage(String _message) throws IOException {
ObjectOutputStream _obj = new ObjectOutputStream(
_Socket.getOutputStream());
_obj.writeObject(new Message(_username, _message));
_obj.flush();
}
public void sendMessage(String _message, String _receiver)
throws IOException {
ObjectOutputStream _obj = new ObjectOutputStream(
_Socket.getOutputStream());
_obj.writeObject(new PrivateMessage(_username, _message, _receiver));
_obj.flush();
}
public static void serverEcho()
{
try{ ObjectInputStream objectin=new ObjectInputStream(_Socket.getInputStream());
Message newmess=(Message)objectin.readObject();
System.out.println(newmess.getAll());
}catch(IOException e){e.printStackTrace();}
catch(ClassNotFoundException e){e.printStackTrace();}
}
}
服务器对等类:
import java.net.*;
import java.io.*;
public class ServerPeer {
Socket _socket;
public ServerPeer(Socket _socket) {
this._socket = _socket;
}
public void methodCall() throws IOException, UnknownHostException,
ClassNotFoundException {
ObjectInputStream _ois = new ObjectInputStream(_socket.getInputStream());
Message _message;
while (_socket.isConnected()) {
_message = (Message) _ois.readObject();
System.out.println( _message.getAll());
_ois = new ObjectInputStream(_socket.getInputStream());
}
}
}
我会将此方法添加到服务器,并在服务器收到消息时发出if语句<代码>如果(messageIsReceived)发送消息(messageReceived)代码>
}捕获(IOException e){}
-永远不要这样做,因为你不知道出了什么问题。至少,}catch(IOException e){e.printStackTrace();}
可以看到错误。(当然,与ClassNotFoundException
和任何其他异常一样)发布堆栈trace@immibis添加的内容比您多。@atishhimpi没有错误。它只是不在TextClient上显示消息。从服务器到客户端,您实际上在哪里发送任何内容?
public void sendMessage(String _message) throws IOException {
ObjectOutputStream _obj = new ObjectOutputStream(_socket.getOutputStream());
_obj.writeObject(new Message(_username, _message));
_obj.flush();
}