我有一个客户端 - 服务器连接..
当我的服务器连接到客户端时,它必须通过输出流发送消息,然后在从inputStream接收消息时打印它。但是当客户端连接时,我会收到"已连接的"消息,但我没有看到"这是一条短信\ n"发送了我的服务器
这是我的服务器:
public class Server1 extends JFrame{
static JTextArea testoarea;
static Socket socket;
static ServerSocket server;
public Server1(){
testoarea = new JTextArea();
add(new JScrollPane(testoarea));
setSize(600, 700);
setVisible(true);
}
public static void main(String[] args) {
Server1 server1 = new Server1();
server1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
inizzializza();
connetti();
}
private static void inizzializza(){
try {
server = new ServerSocket(7100);
showMessage("Server Iniziato\n");
} catch (IOException e) {
System.out.println(e);
}
}
private static void connetti() {
try {
socket = server.accept();
showMessage("Connected \n");
PrintWriter output = new PrintWriter(socket.getOutputStream());
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
output.println("this is a Test message\n");
showMessage(input.readLine().toString());
output.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void showMessage(final String text) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(
new Runnable() {
public void run() {
testoarea.append(text);
}
}
);
}
}
这是我得到的:
答案 0 :(得分:0)
您的input.readLine()
位于服务器端客户端输入流中。这意味着它会尝试从客户端中读取收入消息。
如果您不想阅读服务器从客户端发送到客户端的消息(我认为您想要,但我可能会被误解)。您必须获取客户端套接字输入流。 你得到的地方可能在某个地方打电话:
Socket clientSocket = new Socket("localhost", 7100);