socket readline,阻塞
来源:互联网 发布:java程序员的发展 编辑:程序博客网 时间:2024/06/16 07:38
转载:http://haohaoxuexi.iteye.com/blog/1979837
我修改了部分,因为我感觉原作者的我用到自己里面是不行的,只是加了个“/n”
service:
@Overridepublic void run() {String line = null;InputStream input;OutputStream output;String str = "abc";int len;int index;StringBuffer sb = new StringBuffer();try {ac = new ClassPathXmlApplicationContext("applicationContext.xml");metterServic = (MetterService) ac.getBean("metterServiceImpl");input = socket.getInputStream(); // 获取到输入的Reader reader = new InputStreamReader(socket.getInputStream());char chars[] = new char[25];while ((len = reader.read(chars)) != -1) {line = new String(chars, 0, len);if ((index = line.indexOf("eof")) != -1) {sb.append(line.substring(0, index));break;}sb.append(line);}System.out.println("from client: " + sb);// 读完后写一句Writer writer = new OutputStreamWriter(socket.getOutputStream());writer.write(str);writer.flush();writer.close();reader.close();input.close();socket.close();} catch (IOException e) {e.printStackTrace();}}
android 客户端:
@Override public void run() { final Bundle bundle = new Bundle(); bundle.clear(); //连接服务器 并设置连接超时为5秒 socket = new Socket(); //定义消息 final Message msg = new Message(); msg.what = 0x11; //第一个参数address表示主机的IP地址 try { socket.connect(new InetSocketAddress("113.71.190.204", 30000), 5000); Log.e("测试", "连接成功!"); ip_addr = socketNet.getLocalIpAddress(context); //建立连接后就可以往服务端写数据了 Writer writer = new OutputStreamWriter(socket.getOutputStream()); writer.write("Hello Server."); writer.write(ip_addr + "eof\n"); writer.flush(); //写完以后进行读操作 Reader reader = new InputStreamReader(socket.getInputStream()); char chars[] = new char[64]; int len; StringBuffer sb = new StringBuffer(); String temp; int index; while ((len = reader.read(chars)) != -1) { temp = new String(chars, 0, len); if ((index = temp.indexOf("eof")) != -1) { sb.append(temp.substring(0, index)); break; } sb.append(new String(chars, 0, len)); } System.out.println("from server: " + sb); bundle.putString("msg", sb.toString()); Log.e("收到的数据是:", sb.toString()); msg.setData(bundle); //发送消息 修改UI线程中的组件 myHandler.sendMessage(msg); //关闭各种输入输出流 writer.close(); reader.close(); socket.close(); } catch (IOException e) { //连接超时 在UI界面显示消息 Log.e("报错", Log.getStackTraceString(e)); bundle.putString("msg", "服务器连接失败!请检查网络是否打开"); msg.setData(bundle); //发送消息 修改UI线程中的组件 myHandler.sendMessage(msg); } }
0 0
- socket readline,阻塞
- java Socket readLine() 阻塞
- android Socket通讯时readline阻塞
- Android socket通信 readline方法阻塞
- Java mina socket编程时readLine()阻塞问题
- Android中Socket通信readline()方法阻塞问题
- android BufferedReader readLine 阻塞
- readLine()阻塞的问题
- [JAVA]Socket中BufferedReader.readLine()的阻塞特性导致的数据无法多次发送的问题
- 关于socket 实现聊天室时客户端导致readline出现阻塞解决办法
- BufferedReader readLine()是阻塞方法
- socket通信readline()
- socket阻塞
- 阻塞非阻塞socket
- socket阻塞,非阻塞
- 关于BufferedReader readline 阻塞的问题
- BufferedReader的readLine方法阻塞的处理
- BufferedReader的readLine()为非阻塞
- Jlink使用经验
- 周记 - 10.8
- 三维重建——孔洞填补算法
- js 笛卡尔积算法与多重数组笛卡尔积的例子
- 页回写
- socket readline,阻塞
- Iterm2的配色问题
- 编程语言入门经典100例【Python版】
- C#中@符号的用法
- 更换linux自带openJDK
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- LeetCode 题解(259) : Walls and Gates
- java学习之路,方法重写
- tftp在linux下的使用