一个Tcp-Client可以同时建立与2个不同服务器的连接吗?

时间:2013-10-04 09:37:15

标签: sockets tcpclient tcpserver

我申请的BlokDiagram:

我有一个基于TCP / IP的系统。正如您在blokdiagram上看到的那样,任务是从SAP-Server获取数据。客户端接收文件并将其保存在已知目录上,Gui-App可以在这些目录中访问它们。

我需要创建一个Tcp客户端,它应该从SAP-Server接收文件并将它们发送到Zebra-Printer。客户端应用程序需要传输数据和接收数据。 我可以在一个客户端应用程序中执行此操作,还是需要多个客户端?

我在互联网上发现这个代码只是为了测试。

{
int Socket1 = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

sockaddr_in SrcSockAddr;
SrcSockAddr.sin_family = PF_INET;
SrcSockAddr.sin_addr.s_addr = inet_addr("192.168.1.2");
SrcSockAddr.sin_port = htons(5061);

if( -1 == bind(Socket1, (sockaddr*) &SrcSockAddr, sizeof (SrcSockAddr)) )
   exit(1);

sockaddr_in DstSockAddr;
DstSockAddr.sin_family = PF_INET;
DstSockAddr.sin_addr.s_addr = inet_addr("192.168.1.3");
DstSockAddr.sin_port = htons(5061);

if( connect(Socket1, (sockaddr*)&DstSockAddr, sizeof(DstSockAddr)) )
    exit(2);


int Socket2 = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

if( -1 == bind(Socket2, (sockaddr*) &SrcSockAddr, sizeof (SrcSockAddr)) )
    exit(3);

DstSockAddr.sin_port = htons(5062);
if( connect(Socket2, (sockaddr*)&(DstSockAddr), sizeof(DstSockAddr)) )
    exit(4);

exit(0);
}

无法弄清楚它有什么问题......

1 个答案:

答案 0 :(得分:0)

您可以在一个带有两个套接字的客户端应用程序中执行此操作,一个套接字连接到每个服务器。