簡體   English   中英

從服務器向客戶端發送數據?

[英]Sending data from a server to a client?

我在此代碼中遇到問題,客戶端可以將消息發送到服務器,但它沒有收到從服務器發送的消息,我已經調試了服務器代碼,它可以完成所有應有的工作,但是客戶端可以完成所有代碼,直到收到消息為止= br.readLine(),它粘在那里

服務器代碼

    package server; 
    import java.io.BufferedReader;
    import java.io.EOFException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class server {
    static Socket s;
    static ServerSocket ss;
    static InputStreamReader isr;
    static BufferedReader br;
    static String message;
    static PrintWriter pw;
    public server(){
try {
    ss=new ServerSocket(8080);
    while(true){
        s=ss.accept();
        isr=new InputStreamReader(s.getInputStream());
        br=new BufferedReader(isr);
        message=br.readLine();
        System.out.println(message);
        pw=new PrintWriter(s.getOutputStream(),true);
        pw.write("returned back from server to client");
        System.out.println("message sent");
        pw.flush();
        pw.close();
        isr.close();
        s.close();
    }
} catch (EOFException eofException) {
    // TODO Auto-generated catch block
    eofException.printStackTrace();
}catch(IOException e){
    e.printStackTrace();
}
 }
    public static void main(String[]args){
server s=new server();
  }
  }

客戶代碼

    package com.example.myapplication;
    import android.os.AsyncTask;
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;

    public class ClientSender extends AsyncTask<String,Void,Void> {
Socket s;
DataOutputStream dos;
InputStreamReader isr;
BufferedReader br;
PrintWriter pw;
@Override
protected Void doInBackground(String... voids) {
    String message = voids[0];
    try {
        System.out.println("1");

        s = new Socket("0.0.0.0", 8080);
        pw = new PrintWriter(s.getOutputStream());
        pw.write(message);
        pw.flush();
        pw.close();
        s.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        System.out.println("2");
        s = new Socket("0.0.0.0", 8080);
        System.out.println("connected to the server");
        isr = new InputStreamReader(s.getInputStream());
        System.out.println("3");
        br = new BufferedReader(isr);
        System.out.println("4");
        message = br.readLine();
        System.out.println(message);
        isr.close();
        s.close();
        System.out.println("5");
    } catch (IOException e) {
        e.printStackTrace();
    }

    return null;
}
}

我建議您使用Socket.IO而不是編寫自己的套接字客戶端。 這是一個經過充分測試並有據可查的lib。 這將使您的生活更加輕松。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM