java套接字获取输入流_java – TCP客户端套接字.连接并等待输入流

我有一张wifi sd卡,在我用相机拍摄照片后,会向我发送TCP包,其中包含有关新内存图像的信息.

在终端上,我可以使用此netcat命令读取输入流. netcat连接到ip 192.168.11.254并侦听端口5566.第二行是我收到的图像路径.

$nc 192.168.11.254 5566

>/mnt/sd/DCIM/109_0302/IMGP0101.JPG

在我的应用程序上,我有一个Java客户端套接字连接到相同的IP和端口.但我没有像netcat那样收到输入流,没有任何反应.

void startListenForTCP (){

Thread TCPListenerThread = new Thread(new Runnable() {

@Override

public void run() {

Boolean run = true;

String serverMessage = null;

InetAddress serverAddr = null;

try {

serverAddr = InetAddress.getByName("192.168.11.254");

Socket clientSocket = new Socket(serverAddr, 5566);

try{

BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

while (run) {

serverMessage = in.readLine();

mHandler.post(new DisplayToast(context, "TCP : " + serverMessage));

}

} catch(UnknownHostException e) {

mHandler.post(new DisplayToast(context, "UnknownHostException"));

} catch(IOException e) {

mHandler.post(new DisplayToast(context, "IOException"));

} finally {

clientSocket.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

});

TCPListenerThread.start();

}

解决方法:

试试这可能有效

步骤1

删除这两行:

serverAddr = InetAddress.getByName("192.168.11.254");

Socket clientSocket = new Socket(serverAddr, 5566);

添加此行:

Socket clientSocket = new Socket("192.168.11.254", 5566);

第2步

删除此代码:

try {

BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

while (run) {

serverMessage = in.readLine();

mHandler.post(new DisplayToast(context, "TCP : " + serverMessage));

}

}

添加此代码:

try {

char[] buffer = new char[2048];

int charsRead = 0;

BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

while ((charsRead = in.read(buffer)) != -1) {

String message = new String(buffer).substring(0, charsRead);

Log.e("In While", "msg :"+message);

}

}

标签:android,java,sockets,tcp

来源: https://codeday.me/bug/20190722/1507529.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值