tcp客户端连接两个tcp服务端后,如何区别发过来的数据属于哪个服务端?tcp客户端同时连接了两个tcp服务端,需要根据不同的服务端报文而产生不同的行为。并且由于通讯协议的问题,不能通过报文内容来区分不同的服务端,只好通过IP地址和端口号来区分,请问大家,如何在通信过程中得到IP地址和端口号?谢谢大家帮忙!注意:通过wincap从底层抓取IP地址和端口的办法就不用推荐了,谢谢了

解决方案 »

  1.   

    建立连接的时候,自己保存对应的IP,端口等,getpeername,然后后面用的时候自己区分
      

  2.   

    你建立连接的时候,难道不是用两个不同的socket吗。如果是的话,根据这两个不同的socket不就可以区分了吗?
      

  3.   

    udp收数时
    recvfrom(socket, buffer, buffersize, 0, sockaddr, sizeof(sockaddr))
    从sockaddr中就能得到收到数据的IP和端口号,但是TCP收数时
    recv(listenfd,buffer,100,0);如何得到IP和端口?请大家给个例子,谢谢
      

  4.   

    你不是保存了两个通讯的socket吗?
    或者调用getpeersocket类似的api
      

  5.   

    一个连接实际上由四元组来标识(客户端的IP和端口号,服务器端的IP和端口号),TCP客户端传输之前需要connect的,在connect的时候,客户端实际上就是系统分配端口号来与服务器相连了,你可以用netstat -an来看看连接之后的状态