我建立套接字后,connect、send、recv都正常。 
现在的情况是我想在TCP三次握手完成后(即:第四次)再通过send发一个http请求,而不是像现在在三次握手还没完成(第三次握手的同时)就把有http请求数据通过包发出去了。所以我想先在第三次握手时send一个空包,然后马上再send一个有http请求数据的包,最后通过一个recv接收,但是第二次send却没反应,请问具体该怎么实现?

解决方案 »

  1.   

    本帖最后由 VisualEleven 于 2010-10-29 15:55:06 编辑
      

  2.   

    呵呵,首先你对TCP的三次握手是误解的,三次握手是发生在connect accept之间的
    其次你不熟悉HTTP协议先熟悉下HTTP协议知识
      

  3.   

    三次握手不是上次 socket api实现的了
      

  4.   

    你是在实现socket协议还是socket应用啊
    怎么还会要处理三次握手的
    发送空包会导致被踢吧
    直接发送http协议就好
    难道是学生作业
    为什么在实现HTTP协议这种东东
      

  5.   

    三次握手不需要你程序处理。你只用connect服务器之后,发送你的请求即可。
      

  6.   

    可能是协议没有写对
    就像楼上说的,
    char buf[] = "GET /index.html HTTP/1.1\r\nHOST: www.xxx.com\r\n\r\n";符合\r\n没有写,或者是写的个数不对。
      

  7.   

    Debug调试下,看看函数返回值,或者自己抓个包看看数据对不对