我的应用程序与同一个http服务器建立了多个连接,我发现这些连接实际上都是同一个session(在服务器查看各个session的sessionid发现其实是同一个session)。我还发现除非是我启动该应用程序的另一个实例,才会建立一个新的session。所以我想是不是一个进程只能与同一个服务器建立一个session?
找了很多文档也没有确切的答案,所以想和大家讨论下,请问我的结论对不对?

解决方案 »

  1.   

    调用的 wininet?试试其他的http库。
      

  2.   

    对的,我使用的wininet
    又仔细想了下,其实我的问题是,同一个客户地址只能与同一个服务器地址建立一个session连接?
      

  3.   

    hehe,顺便问一句还有什么别的http库吗?
      

  4.   

    你问一下你们的PHP程序员看看,PHP里面用的那个HTTP函数库是C版本的调用,也有C++的,很有名气,只是我一时想不起名字来。同一个客户IP应该可以建立多个SESSION
      

  5.   

    如果是用wininet,在同一个进程中多个请求,是不是一个session(靠会话Cookie维持的)是可以控制的。关键在于 HttpOpenRequest(.... ,INTERNET_FLAG_NO_COOKIES | ... , ) 如果用这个INTERNET_FLAG_NO_COOKIES标志,则每次发出的请求都是新Session,否则,维持会话的Cookie会被自动加到请求头中,因此总是同一会话。假如你的进程中有多个线程,你希望每个线程与服务器分别用不同的会话,并且各自线程维持自己的会话,那么应该这么做:1。每个线程在任何一次请求时,都使用INTERNET_FLAG_NO_COOKIES 标志。
    2。每个线程第一次请求时,从服务器返回的Header 中解析出 Set-Cookie域 的值,并记住。
    3。每个线程再次发出请求时,在待发送的请求的 Header中加入 "Cookie: XXXXX" (XXXXX代表上面记住的值)。
      

  6.   

    用wininet做与http服务器交互的程序,教你一个绝招,去找一个 HTTP 捕获工具,比如 HttpWatch, 先用IE手工去访问URL 或 做页面提交,观察和分析IE 的 HTTP的发送和返回内容,主要是 Header 信息,然后程序照猫画虎就行了。