android socket 收不到数据,android Socket服务端接收客户端数据问题

本文档详细介绍了在Android应用中遇到Socket服务端无法接收到客户端数据的问题,通过`IoSocketListener`类的实现来分析问题所在。`IoSocketListener`作为一个客户端连接监听器,监听17171端口,并在接收到新的客户端连接时启动新的线程进行处理。当服务端接收到客户端连接并获取其远程socket地址后,会发送一个欢迎消息。在关闭资源时,确保每个客户端连接及服务端套接字都被正确关闭。针对收不到数据的故障,开发者应检查网络连接、编码格式以及异常处理等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagecom.example.qmik.framework;importjava.io.BufferedOutputStream;importjava.io.IOException;importjava.net.ServerSocket;importjava.net.Socket;importjava.net.SocketAddress;importjava.util.ArrayList;importjava.util.List;/** 功能:客户端连接监听器

* 时间:2013/06/07

* 作者:M1301001*/

public class IoSocketListener implementsRunnable {private List socketList=new ArrayList();private int serverPort=17171;privateServerSocket socket;publicIoSocketListener(){try{this.socket=new ServerSocket(this.serverPort);

}catch(IOException e) {

e.printStackTrace();

}

}

@Overridepublic voidrun() {try{while(true){

Socket client= this.socket.accept();this.socketList.add(client);

SocketAddress caddress=client.getRemoteSocketAddress();

String ip=caddress.toString();this.sendMsg(client,ip);

Thread h=new Thread(newIoClientListener(client));

h.start();

}

}catch(IOException e) {

e.printStackTrace();

}

}/** 释放资源*/

public voidonDestroy(){if(this.socket!=null){try{for(Socket item:this.socketList){

item.close();

}this.socket.close();

}catch(IOException e) {return;

}

}

}/** 发送消息到客户端*/

public synchronized voidsendMsg(Socket client,String msg) {try{

BufferedOutputStream out= newBufferedOutputStream(client.getOutputStream());

out.write(msg.getBytes("utf-8"));

out.flush();

}catch(Exception e) {

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值