Android[socket 通信]Android控制台接收不到服务器的消息

注~孤身 2021-11-27 19:42:48

在Android Stdio中

这是客户段的代码 

 

 

package com.example.demo7;

import android.util.Log;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.Buffer;
import java.nio.charset.StandardCharsets;

public class SocketThread extends Thread {

    private Socket socket;

    @Override
    public void run() {

        try {
            System.out.println("正在进行服务器连接。。。。。。。。。。");
            socket = new Socket("192.168.210.18",20000);
            System.out.println("服务器连接成功");
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(("你好!我是来自客户端").getBytes(StandardCharsets.UTF_8));
            new Thread(){
                @Override
                public void run() {
                    try {
                        BufferedReader br =new BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8"));
                        System.out.println("来自服务器的消息:"+br.readLine().equals(null));
                        String serverinfo =null;
                        while((serverinfo=br.readLine())!=null){
                            Log.i("来自服务器的消息:",serverinfo);
                            System.out.println("来自服务器的消息:"+serverinfo);


                        }

                    } catch (IOException e) {
                        e.printStackTrace();

                    }

                }
            }.start();

//           socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

服务器代码

 

 读写子线程

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class SocketServer implements Runnable {
	
	public Socket socket;
	public int i;

	public BufferedReader br;
	public SocketServer(Socket socket ,int i ){
		
		
		try {
			 br =new BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		this.socket=socket;
		this.i=i;
	}

	@Override
	public void run() {
		
			System.out.println(i+"号客户端线程已启动!");
			
			String content =null;
			
			
			while((content=ReadFromClient())!=null){
				
				for(Socket s :SocketMain.socketlist){
					
					System.out.println(i+"号客户端的消息:"+content);
					
					try {
						OutputStream os =s.getOutputStream();
						
						os.write(("server info :"+content+"\n").getBytes("utf-8"));
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
						
					}
					
				}
				
			}
			
	}
	public String ReadFromClient(){

		
		try {
			return br.readLine();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			SocketMain.socketlist.remove(socket);
		}return null;

	
	}
}

他俩已经连接上了

可是服务器只能显示客户端的消息,但是客户端显示不出服务器的消息。

...全文
277 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小胖仔啦 2022-11-18
  • 打赏
  • 举报
回复

你这个问题解决了吗,客户端接收消息就卡在 BufferedReader 那里了,读取不到消息,一直到超时

比特灵 初级 2021-11-29
  • 打赏
  • 举报
回复

flush

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧