Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android客户端和Java服务器,客户端未使用套接字从服务器接收消息_Java_Android_Sockets_Client Server_Tcpclient - Fatal编程技术网

Android客户端和Java服务器,客户端未使用套接字从服务器接收消息

Android客户端和Java服务器,客户端未使用套接字从服务器接收消息,java,android,sockets,client-server,tcpclient,Java,Android,Sockets,Client Server,Tcpclient,我正在进行一个项目,我需要将android应用程序连接到服务器,现在我要连接并能够将消息从客户端发送到服务器,但不能从服务器发送到客户端 我尝试了BufferedReader和PrintWriter,但没有帮助我正在使用套接字编程 不要在这个问题上加上重复的标签,因为我看到了很多解决方案,但这些都是单向的客户机到服务器的解决方案,而不是服务器到客户机的解决方案 我尝试了很多解决方案,但对其中任何一个都没有帮助,所以我猜android应用程序会有一些东西从服务器接收到我丢失的消息 急需帮助,我别无

我正在进行一个项目,我需要将android应用程序连接到服务器,现在我要连接并能够将消息从客户端发送到服务器,但不能从服务器发送到客户端

我尝试了BufferedReader和PrintWriter,但没有帮助我正在使用套接字编程

不要在这个问题上加上重复的标签,因为我看到了很多解决方案,但这些都是单向的客户机到服务器的解决方案,而不是服务器到客户机的解决方案

我尝试了很多解决方案,但对其中任何一个都没有帮助,所以我猜android应用程序会有一些东西从服务器接收到我丢失的消息

急需帮助,我别无选择,所以发布这个问题,帮我,伙计们

我的服务器代码是

公共类SimpleTextServer{
私有静态ServerSocket ServerSocket;
私有静态套接字clientSocket;
私有静态InputStreamReader InputStreamReader;
私有静态OutputStreamWriter OutputStreamWriter;
私有静态BufferedReader BufferedReader;
私有静态BufferedWriter BufferedWriter;
私有静态字符串消息;
私有静态PrintWriter;
公共静态void main(字符串[]args)引发IOException,ClassNotFoundException{
试一试{
serverSocket=新的serverSocket(4444);//服务器套接字
}捕获(IOE异常){
System.out.println(“无法侦听端口:4444”);
}
System.out.println(“服务器已启动,正在侦听端口4444”);
while(true){
试一试{
clientSocket=serverSocket.accept();//接受客户端连接
inputStreamReader=新的inputStreamReader(clientSocket.getInputStream());
bufferedReader=new bufferedReader(inputStreamReader);//获取客户端消息
message=bufferedReader.readLine();
System.out.println(消息);
printwriter=新的printwriter(clientSocket.getOutputStream(),true);
printwriter.write(“u r dere”+消息+“\n”);//将消息写入输出流
printwriter.flush();
inputStreamReader.close();
bufferedReader.close();
printwriter.close()
clientSocket.close();
}捕获(IOEX异常){
System.out.println(“消息读取问题”);
}
}
}
}
我的安卓客户端代码就是这个,我对那个给我带来麻烦的部分做了评论

公共类SlimpleTextClientActivity扩展活动{

private Socket client;
private PrintWriter printwriter;
private BufferedReader inFromUser;
//private static ObjectInputStream printreader;
private static BufferedReader bufferedReader;
private static InputStreamReader inputStreamReader;
private EditText textField;
private Button button;
private String messsage;
private String message;
ObjectOutputStream oos = null;
ObjectInputStream ois = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_slimple_text_client);

    Calendar c1 = Calendar.getInstance();
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
    String strdate1 = sdf1.format(c1.getTime());

    messsage=strdate1;

    textField = (EditText) findViewById(R.id.editText1); // reference to the text field
    button = (Button) findViewById(R.id.button1); // reference to the send button



    SendMessage sendMessageTask = new SendMessage();
    sendMessageTask.execute();
    // Button press event listener
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            messsage = messsage+textField.getText().toString(); // get the text message on the text field
            textField.setText(""); // Reset the text field to blank
            SendMessage sendMessageTask = new SendMessage();
            sendMessageTask.execute();
        }
    });
}

private class SendMessage extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {

            client = new Socket("10.129.26.120", 4444); // connect to the server
            printwriter = new PrintWriter(client.getOutputStream(), true);
            printwriter.write(messsage); // write the message to output stream
            printwriter.flush();



            /*
            inputStreamReader = new InputStreamReader(client.getInputStream());
            bufferedReader = new BufferedReader(inputStreamReader); // get the client message
            bufferedReader.ready();*/





            //message = bufferedReader.readLine();
        //  System.out.println(message);


        //  TextView txtdate1 = (TextView) findViewById(R.id.textView1);
        //      txtdate1.setText(message);






            printwriter.close();
            bufferedReader.close();
            client.close(); // closing the connection

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } 
        return null;
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.slimple_text_client, menu);
    return true;
}
私有套接字客户端;
私人印刷作家;
私有缓冲阅读器;
//私有静态ObjectInputStream打印阅读器;
私有静态BufferedReader BufferedReader;
私有静态InputStreamReader InputStreamReader;
私有编辑文本字段;
私人按钮;
私有字符串消息;
私有字符串消息;
ObjectOutputStream oos=null;
ObjectInputStream ois=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u slimple\u text\u客户端);
Calendar c1=Calendar.getInstance();
SimpleDataFormat sdf1=新的SimpleDataFormat(“yyyy_-MM_-dd_-HH_-MM_-ss”);
字符串strdate1=sdf1.format(c1.getTime());
Message=标准日期1;
textField=(EditText)findViewById(R.id.editText1);//对文本字段的引用
button=(button)findViewById(R.id.button1);//对发送按钮的引用
SendMessage sendMessageTask=新建SendMessage();
sendMessageTask.execute();
//按钮按下事件侦听器
setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
message=message+textField.getText().toString();//获取文本字段上的文本消息
textField.setText(“”;//将文本字段重置为空白
SendMessage sendMessageTask=新建SendMessage();
sendMessageTask.execute();
}
});
}
私有类SendMessage扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
试一试{
client=newsocket(“10.129.26.120”,4444);//连接到服务器
printwriter=新的printwriter(client.getOutputStream(),true);
write(message);//将消息写入输出流
printwriter.flush();
/*
inputStreamReader=新的inputStreamReader(client.getInputStream());
bufferedReader=new bufferedReader(inputStreamReader);//获取客户端消息
bufferedReader.ready()*/
//message=bufferedReader.readLine();
//System.out.println(消息);
//TextView txtdate1=(TextView)findViewById(R.id.textView1);
//txtdate1.setText(消息);
printwriter.close();
bufferedReader.close();
client.close();//关闭连接
}捕获(未知后异常e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
} 
返回null;
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.slimple_text_客户端,菜单);
返回true;
}

}

readline()需要发送一行。你要寄吗?还有,我很确定这是个骗局。另外,在“我尝试了许多解决方案”调试过程中,您发现了什么,这样我们就不必检查您已经完成的工作(并行,浪费时间)。首先,您的客户端是否连接到服务器?如果连接到服务器,它是否到达服务器上的“printwriter.write(Message)”行,执行是否到达“message=bufferedReader.readLine()”?如果到达,是否在客户端连接并发送后到达下一行?