Java Socket 不向客户端和服务器发送消息

标签 java sockets message send serversocket

我的套接字没有将消息发送到服务器或返回到客户端...,我不知道为什么,但我可以连接到服务器...

我试图解决这个问题,但我不能,所有可能的方法都不适合我。 所以我希望这里的一些人可以帮助我。

感谢您的阅读..,这是服务器:

package test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Timer;
import java.util.TimerTask;

import ADG.luxemita.LuxEmita;

public class serverHostTest{

static Socket socket;
static DataInputStream in;
static ServerSocket serverSocket;
//static InputStreamReader isr;
static BufferedReader br;
//static BufferedReader stdBr;
//static InputStream is;
static DataOutputStream out;
//static OutputStreamWriter osw;
static BufferedWriter bw;
//static OutputStream os;
static PrintWriter stdOut;

public serverHostTest(String[] args) throws Exception{
    int port = Integer.parseInt(args[2]);

    LuxEmita.luxLogger.logInfo("Starting Server....");
    serverSocket = new ServerSocket(port);
    LuxEmita.luxLogger.logInfo("Started Server....");
    socket = serverSocket.accept();
    LuxEmita.luxLogger.logInfo("Intialized Socket....");
    out = new DataOutputStream(socket.getOutputStream());
    out.writeUTF("Server Started Successfully!, Some more data...");

    //SetupEvent.initInstance();

    /*out = new DataOutputStream(socket.getOutputStream());         
    os = socket.getOutputStream();
    osw = new OutputStreamWriter(os);
    bw = new BufferedWriter(osw);
    stdOut = new PrintWriter(socket.getOutputStream(), true);

    in = new DataInputStream(socket.getInputStream());      
    is = socket.getInputStream();
    isr = new InputStreamReader(is);
    br = new BufferedReader(isr);   
    stdBr = new BufferedReader(new InputStreamReader(System.in));        
    in2 = new BufferedReader(new InputStreamReader(socket.getInputStream()));*/

    stdOut = new PrintWriter(socket.getOutputStream(), true);
    br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    if(serverHostTest.serverSocket != null && socket != null){
        new Timer().schedule(new TimerTask() {
            public void run(){
                try {
                    if(br.readLine() != null){
                        String test = br.readLine();
                        System.out.println("Received MSG: " + test);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }, 1, 1);
    }
}

public static void say(String[] args) throws Exception {
    stdOut.write(args[2]);
    stdOut.flush();
    System.out.println("Message sent to the client is " + args[2]);
}

}

最佳答案

也许您的问题与以下内容有关:

            try {
                if(br.readLine() != null){
                    String test = br.readLine();
                    System.out.println("Received MSG: " + test);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

注意你是如何阅读两遍的。将第一个 br.readLine() 存储在 String 变量中,然后使用该变量而不是再次读取。

关于Java Socket 不向客户端和服务器发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19694747/

相关文章:

java - Java 中通过标准输入/输出进行通信

Java:需要修改乘法表字符串以在每个字符之间添加空格

java - 计算机唤醒后如何识别 MacOS 上断开的 Java 套接字连接

sockets - Lua socket.http sink 参数

Node.js:同一消息的多个副本

java - 计算 Spark 数据集上的 Pearson 相关性

php - 如何通过 Web 套接字将私有(private)数据安全地发送到 Objective-C 客户端并返回到服务器?

mysql - ejabberd 16.06 + mysql 5.5.50,消息历史记录不保存

c++ - 如何从另一个窗口/程序发送/接收消息?

java - Bundle.loadClass() 返回没有字段或方法的 Class 实例