将数据从java服务器发送到c++;客户

将数据从java服务器发送到c++;客户,java,sockets,Java,Sockets,Sample.java class Sample { private BufferedOutputStream output; public handleRequest(Socket socket) { this.output = new BufferedOutputStream(socket.getOutputStream(), BUFFSIZE); sendString("sometext");//This is working fi

Sample.java

class Sample
{
    private BufferedOutputStream output;

    public handleRequest(Socket socket)
    {
        this.output = new BufferedOutputStream(socket.getOutputStream(), BUFFSIZE);
        sendString("sometext");//This is working fine
    }

    public void sendString(String str) throws IOException
    {
        ByteArrayOutputStream bytestream;
        bytestream = new ByteArrayOutputStream(str.length());

        DataOutputStream out;
        out = new DataOutputStream(bytestream);

        for (int i = 0; i < str.length(); i++)
            out.write((byte) str.charAt(i));

        output.write(bytestream.toByteArray(), 0, bytestream.size());
        output.flush();
    }
}

每当我在另一个class.java中调用sendstring方法时,它都会给我一个NullPointerExcetpiton。我无法理解。有人能帮我吗..谢谢..

当你在
示例smp=new Sample()的构造函数之后直接调用
smp.sendstring(“某物”)
您将在下面的行中拥有NPE

output.write(bytestream.toByteArray(), 0, bytestream.size());

因为
BufferedOutputStream
输出从来没有初始化过,因此当您直接在
Sample smp=new Sample()的构造函数之后调用
smp.sendString(“某物”)
时,它是
null

您将在下面的行中拥有NPE

output.write(bytestream.toByteArray(), 0, bytestream.size());

因为
BufferedOutputStream
输出
从未被初始化,因此
为空
,因为您尚未初始化

private BufferedOutputStream output;
所以当你调用

smp.sendString("somestring");//This is not working
输出
为空。您需要执行方法
public handleRequest(Socket-Socket){
以首先初始化输出strem

编辑

您可以重构您的方法并将初始化提取到另一个方法…但我不确定这是否是您要寻找的

public OutputStream initializeOutputStream(Socket socket, int size) {
     return new BufferedOutputStream(socket.getOutputStream(), size)
}

public handleRequest(Socket socket)
{
    this.output = initializeOutputStream(socket, BUFFSIZE);
    sendString("sometext");//This is working fine
}

然后在
类的另一个类中
只需使用
public OutputStream initializeOutputStream(Socket Socket,int size)
intead of
public handleRequest(Socket Socket)

,因为您尚未初始化

private BufferedOutputStream output;
所以当你调用

smp.sendString("somestring");//This is not working
output
为空。您需要执行方法
public handleRequest(Socket Socket){
以首先初始化output strem

编辑

您可以重构您的方法并将初始化提取到另一个方法…但我不确定这是否是您要寻找的

public OutputStream initializeOutputStream(Socket socket, int size) {
     return new BufferedOutputStream(socket.getOutputStream(), size)
}

public handleRequest(Socket socket)
{
    this.output = initializeOutputStream(socket, BUFFSIZE);
    sendString("sometext");//This is working fine
}

然后在
类的另一个类中
只需使用
公共输出流初始化输出流(Socket Socket,int size)
intead of
public handleRequest(Socket Socket)

我的HandlerRequest方法中有一个巨大的代码..我不能调用该方法..是否有其他方法可以解决此问题..我的HandlerRequest方法中有一个巨大的代码..我不能调用该方法..是否有其他方法可以解决此问题。。。