2013-10-04 70 views
1

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

我有一个基于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); 
} 

无法弄清楚什么地方错了...

+0

你为什么觉得有什么问题?你有错误吗?不明原因的行为?你需要更具体。 –

回答

0

您可以有两个插座,一个连接到每个服务器做在一个客户端应用程序。

+0

你可以检查我试过的代码是什么错误(从互联网复制它)。 – RamHS

+2

更改它在每个可能的错误后调用perror(),你会看到自己。只要为每个错误调用exit()都是完全浪费你的时间,以及其他人的时间。 – EJP

+1

'perror()'在Windows上不存在。如果您想为给定的错误代码检索人类可读的文本消息,请改为使用'WSAGetLastError()',使用'FormatMessage()'。 –

相关问题