首先,我的合作伙伴为我提供了一个IP,我使用套接字与此IP通信,下面是我的代码
SOCKADDR_IN target;
target.sin_family = AF_INET;
target.sin_port = htons (8081);
target.sin_addr.s_addr = inet_addr ("192.168.0.102");
mThreadSocket = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); //Create socket
if (mThreadSocket == INVALID_SOCKET)
{
return ;
}
//Try connecting...
if (connect(mThreadSocket, (SOCKADDR *)&target, sizeof(target)) == SOCKET_ERROR)
{
LogTrace( TBCAF_TRACE_LEVEL_ERROR, FWARNING"Winsock started fail." );
return ; //Couldn't connect
}
LogTrace(TBCAF_TRACE_LEVEL_4, FYELLOW"CCloudInterface: connected.");
u_long iMode=1;
ioctlsocket(mThreadSocket,FIONBIO,&iMode);
while(true)
{
if (!process_receive())
continue;
if(!process_send())
continue;
// above two function both use the socket "mThreadSocket"
}
上面的代码工作正常,但最近我的合作伙伴提供了两个IP,并说当一个人关闭时,我可以切换到另一个以避免通信丢失,但我应该做什么?
我应该在开头打开两个连接的套接字,并先使用一个套接字, 当第一个关闭时切换到另一个?
或者我应该只保持一个套接字打开,然后创建一个函数,例如调用ReConnect(),并在此functon更改套接字的IP?但是怎么做
感谢任何帮助,谢谢。