各位,我客户端用 URLConnection向服务端发送数据,服务端我用socket来接收,怎么接收不到想要的数据?只能收到如下内容:POST /a.lif HTTP/1.1Content-type: text/xmlUser-Agent: Java/1.4.1_02Host: 127.0.0.1:10444Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2Connection: keep-aliveContent-Length: 9
import java.io.*;
import java.net.*;public class server extends Thread
{
private Socket s;
server(Socket s)
{
this.s=s;
}
public static void main(String[] args){
try
{
ServerSocket ss=new ServerSocket(10444);
System.out.println("监听10444开始");
while(true)
{
Socket client=ss.accept();
server threads=new server(client);
threads.start();
}
}
catch(Exception ex){
System.out.println(ex);
}
}
public void run()
{
try{
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out=new PrintWriter(s.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.write("服务端正在接收...");
out.flush();
if(str.length()==0)
{
break;
}
}
out.write("服务端接收完毕");
out.flush();
System.out.println("接收完毕");
in.close();
out.close();
s.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public class client{
public static void main(String[] args){
try{
URL myurl=new URL("http://127.0.0.1:10444/a.lif");
HttpURLConnection myurlcon=(HttpURLConnection)myurl.openConnection();
myurlcon.setDoOutput(true);
myurlcon.setDoInput(true);
myurlcon.setDefaultUseCaches(false);
myurlcon.setUseCaches(false);
myurlcon.setRequestMethod("POST"); myurlcon.setRequestProperty("Content-type","text/xml");
String str="<xml>";
String strlength=new Integer(str.length()).toString();
myurlcon.setRequestProperty("Content-length",strlength);
myurlcon.connect();
DataOutputStream outStream = new DataOutputStream(myurlcon.getOutputStream());
outStream.writeBytes(str);
outStream.flush();
outStream.close();
BufferedReader in=new BufferedReader(new InputStreamReader(myurlcon.getInputStream()));
String strread;
while((strread=in.readLine())!=null){
System.out.println(strread);
}
in.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
而且content-length怎么等与9了呢 <xml> 只有5 阿不知道为什么
难道outStream.writeBytes(str); 进去的不是<xml>
我的意思是,怎么发送的这个字符串,收不到呢,只能得到长度,怎么才能得到内容的?
{
break;
}
我服务端程序改为下面的形式,可还是没收到啊循环不停了
服务端程序:
import java.io.*;
import java.net.*;public class server extends Thread
{
private Socket s;
server(Socket s)
{
this.s=s;
}
public static void main(String[] args){try
{
ServerSocket ss=new ServerSocket(10444);
System.out.println("监听10444开始");
while(true)
{
Socket client=ss.accept();
server threads=new server(client);
threads.start();
}
}
catch(Exception ex){
System.out.println(ex);
}
}
public void run()
{
try{
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out=new PrintWriter(s.getOutputStream());String str;
while((str=in.readLine())!=null){
System.out.println(str); out.write("服务端正在接收...");
out.flush();
}out.write("服务端接收完毕");
out.flush();
System.out.println("接收完毕");
in.close();
out.close();
s.close();}
catch(Exception ex){
ex.printStackTrace();}
}
}
while((str=in.readLine())!=null){
System.out.println(str);
}