4.2.3通过以上的方式我就可以写程序了
1.我首先new一个我建立一个serversocket在本地80端口监听,建一个循环,如果接收到请求就是socket.accpet到一个socket,那我就建立一个线程,我用readLine这个读取接收到的一行数据
2.打开浏览器,输入我本地地址和我写的html文件名,根据收到的信息,我相应的吧那个html转成byte数据传给客户端责任胜于能力演讲稿
4.2.4首先我要连接html要用什么方式来上传。
1.如果要做上传功能,那就是说要将静态网页变成动态网页
而我用的java语言,那么我要写动态网页就要写jsp
Jsp是很好,但是我的服务器将放到Android平台上,而jsp运行时,必须用java转成html以后才能发给客户端。如果在Android平台上运行是无法将jsp转成html的。也就是我必须放弃动态网页计划。
2.我利用inputstream读取到post方式上传的文件的信息,信息是由http包头加上文件信息都在socket里面能读取出来,那也就是我,我可以把socket里面的数据全部读取出来,然后将数据中文件以外的数据跳过
问题1:文本文件接收没问题,但是其他文件会出错。
记过我了解,发现是编码问题,我做了一件事,就是将未知的编码装成ASCII编码而导致错无。我明白到我要直接算出我要的文件开始点,该怎么办。根据我了解:
那个http的头文件全是ASCII编码,而且每端都用\n还分割。那么我就要读取一定数量的的socket所接收的信息。这样就能解决这个问题。
问题2. 就是我所上传的文件做多8kb左右。
解决的方案:就是发现inputstream接收到的数据最大只有8k,一开始以为是每次accpet以后才能inputstream接收一次。后来想了想一起c++的的连接过程:
之前学过c++的网络编程,我回想了一下。
在一次accpet以后可以进行多次的发送和接收。那么java的应该在accpet后面也可以多次发送和接收,那么我也可以尝试下。
结果发现是的,文件过大的话,可以使用多次接收来把文件全部接收,而且第二次接收到的信息没有包头,我可以直接接收后保存起来。
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页