正在写用socket发送http报文给client的代码,目前遇到一个问题:在socket中用recvData接收到client请求后,经过若干处理,我需要返回client一段http报文用sendData()方式可以发送经过我自己拼装的html格式,比如:char html_text[10240]="";sprintf(html_text,"<HTML><TITLE>hello world!</TITLE><META http-equiv=Content-Type content=text/html; charset=gb2312>...此处省略...</HTML>");ServerSocket.sendData(ClientSocket,html_text);发送给client的浏览器后,可以显示正常,但是,如果发送的内容中有图片链接或者是.css样式的话,client的浏览器无法正常解析出来,比如html_text中含有:<LINK href=/src/main.css type=text/css rel=stylesheet>经过socket发送后,client的浏览器的源文件中能查看到以上html代码,但是html页面却没有显示出正常的.css样式?不知道有没有高人指点!谢谢~

解决方案 »

  1.   

    客户端会发送多次请求,每次只能请求一个文件,你的服务器准备再接收 .js .css .jpg之类的请求吧
      

  2.   

    可能是我没描述清楚,不好意思!Socket服务端的目录有/res资源目录,里面我会保存一些.css样式和图片当client通过浏览器向Server发送请求的时候,Socket server会通过sendData()将html的编码发送给client的浏览器html编码中包含/res目录里的.css样式和图片链接,现在是如何将这些.css和图片的效果完整的显示在client的浏览器上?
    难点是:client只需要通过浏览器请求一次server,比如输入http://localhost/index.htm,服务端socket会将/res目录下的index.htm文件用"rb"方式打开,然后sendData给客户端的浏览器,问题是index.htm里调用的.css和图片在客户端浏览器上无法正常显示!
      

  3.   

    1楼说得很清楚啦。client端解析html后,会根椐解析的情况,继续发出其他请求的。msdn 里应该有一个 httpsvr 例子的,你找找看一下吧。
      

  4.   

    浏览器不可能一次请求所有文件,服务器也不知道一个HTML文件里到底还需要依赖哪些其它文件,必须在HTML被浏览器解析后,浏览器发现还需要下载哪些文件,会依次向服务器发送请求。你的服务器其实非常好处理,来一个请求就返回一个文件的内容。