urlconnection-URLConnection 连接 ServerSocket 无法获取流里面的数据?

问题描述

URLConnection 连接 ServerSocket 无法获取流里面的数据?

Service端

 public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(9999);

        Socket socket = serverSocket.accept();
        socket.setSoTimeout(20000);
        OutputStream out = socket.getOutputStream();
        InputStream inputStream = socket.getInputStream();

        Reader reader = new InputStreamReader(inputStream);
        char chars[] = new char[512];
        int len;
        while ((len = reader.read(chars)) != -1) {
            String str = new String(chars, 0, len);
            System.out.println(str);
        }
        System.out.println("--------------------");
        socket.close();

    }

Client 端

 public static void main(String[] args) throws Exception {

        URL url = new URL("http://127.0.0.1:9999/work");
        URLConnection con = url.openConnection();
        con.setDoOutput(true);
        con.setDoInput(true);

        OutputStream out = con.getOutputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));

        out.write("Hello World".getBytes());
        out.flush();
//        String line = "";
//        for (line = br.readLine(); line != null; line = br.readLine()) {
//            System.out.println(line);
//        }
        out.close();
    }

Server端输出:
POST /work HTTP/1.1
User-Agent: Java/1.6.0_45
Host: 127.0.0.1:9999
Accept: text/html, image/gif, image/jpeg, ; q=.2, */; q=.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 0


没有输出Hello World! 求解

解决方案

你这样改一下,service端口先处理inputstream,后处理outputstream;client端先处理outputstream,后处理inputstream。

解决方案二:

http://blog.csdn.net/yanzi1225627/article/details/22222735

解决方案三:

Client 改成这样 拿到了

 public static void main(String[] args) throws Exception {

        URL url = new URL("http://127.0.0.1:9999/work");
        URLConnection con = url.openConnection();
        con.setDoOutput(true);
        con.setDoInput(true);

        OutputStream out = con.getOutputStream();

        out.write("Hello World".getBytes());
        out.flush();
        BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
        out.close();
    }

谢 2楼

时间: 2025-01-01 12:06:00

urlconnection-URLConnection 连接 ServerSocket 无法获取流里面的数据?的相关文章

andord socket连接网站,怎么获取网页数据

问题描述 andord socket连接网站,怎么获取网页数据 可以连上baidu.com ,但是到readline(),就卡助了...怎么获取数据阿,或者是显示出百度的主页,求救

c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了?

问题描述 c3p0连接池中获取的Connection对象的close()方法是真的把连接给关闭了? 自己做写了一个管理数据源的DBManager,构想中从数据源里面获取的Connection使用完之后执行close()方法,然后把Connection对象闲置回连接池中. 但是测试出来的结果好像每次执行close()之后connection就销毁了. 代码如下: DBManager.java package ben.DBUtils; import java.sql.Connection; impo

网络编程-求教C语言能申请GET或CGI连接后如何获取数据。

问题描述 求教C语言能申请GET或CGI连接后如何获取数据. 本人现在在公司实习中,做的这个方向公司里只有一个人在研究.希望各位大神不吝帮助. 我们现在需要连接一个网络摄像头,用的是LINUX系统的ARM核心的板子.网络摄像头的API只有WINDOWS平台的,LINUX平台下只能通过浏览器的GET或CGI连接在网页中显示视频.该视频为RTP连接.这本来是浏览器的工作,现在要在自己的APP中实现提取视频的数据,之后做相关处理. 请问如何直接用应用程序获得GET或CGI申请后的那个RTP连接? 谢谢

java 断开从连接池中获取的连接,规范的操作是怎样的

问题描述 java断开从连接池中获取的连接,规范的操作是怎样的,ResultSet,PreparedStatement,Connection是否需要依次关闭,若需要,应该怎么做才是高效率,规范,而且不会发生内存泄露.涉及到很多try和catch,不知怎么处理. 解决方案 解决方案二:ResultSet,PreparedStatement,Connection是否需要依次关闭需要应该怎么做才是高效率写一个函数用来关闭,如放在的帮助类JdbcUtil里,如publicstaticvoidreleas

hibernate3-shh框架连接Oracle数据库报流已被关闭什么原因啊

问题描述 shh框架连接Oracle数据库报流已被关闭什么原因啊 我连接MySql数据库是工作流正常的,改成Oracle数据库后第一次初始化时没报错的,再启动就出现以下问题了!哪位大侠帮帮看看的!谢谢的! Hibernate: select resources0_.DEPLOYMENT_ as DEPLOYMENT4_12_1_, resources0_.DBID_ as DBID1_1_, resources0_.NAME_ as NAME5_1_, resources0_.DBID_ as

安卓 xmpp-smack连接ejabberd怎么获取离线消息?

问题描述 smack连接ejabberd怎么获取离线消息? ejabberd不支持XEP-0013协议,不能使用OfflineMessageManager,那么应该怎么获取离线消息呢?DalayInformation,网上写的这个方法试过了,不管把Presence设置为true还是false,都不行怎么获取都是空的.是服务器还需要配置还是我这边的问题啊?本人对服务器不太懂,求大神们指点.不胜感激. 解决方案 http://blog.csdn.net/zxjllz405/article/detai

visual studio 2008-ORACLE 用OCCI连接,getstring()获取数据出错问题

问题描述 ORACLE 用OCCI连接,getstring()获取数据出错问题 我用vs2008,OCCI连接ORACLE11数据库,在使用getstring()函数时,如果获取的数据库较长就会报错,我测试了一下,不超过七个汉字获取不会出错,一旦超过了就会报错第八个数据是一个address太长就不行

qt sqlite ...-qt连接sqlite数据库获取数据问题

问题描述 qt连接sqlite数据库获取数据问题 qt已成功连接到sqlite数据库,数据库里面有data表,为什么显示不存在data表,读不到数据? 解决方案 http://www.oschina.net/question/878586_225008 解决方案二: bool isTableExist = query.exec(QString("select count(*) from sqlite_master where type='table' and name='%1'").a

net-socket通信为什么获取不到流里面的数据

问题描述 socket通信为什么获取不到流里面的数据 就是我在用while循环读取数据的时候读不出来?但是我打印new String(buf).trim()就有数据? 我们后台是.net写的.请问这是个什么问题 package com.jm.jmsdk_tools_jar; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.