是否可以使用 C 在客户端套接字程序中关闭旧服务器 IP 连接并将其连接到新服务器 IP?我的客户端程序通过 SCTP 连接与服务器连接,在某些情况下我想断开与旧服务器的连接并连接到新服务器而不打开新套接字?客户端代码:
connSock = socket (AF_INET, SOCK_STREAM, IPPROTO_SCTP);
if (connSock == -1)
{
perror("socket()");
exit(1);
}
struct sctp_paddrparams params;
len = sizeof(params);
memset(¶ms, 0, sizeof(params));
if (getsockopt(connSock, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, ¶ms, &len)) {
perror("getsockopt");
exit(1);
}
// set client address
struct sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
char* client_ip = get_our_ip();
localaddr.sin_addr.s_addr = inet_addr(client_ip) ;
localaddr.sin_port = 0;
bind(connSock, (struct sockaddr *)&localaddr, sizeof(localaddr));
// set server address
bzero ((void *) &servaddr, sizeof (servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons (port);
servaddr.sin_addr.s_addr = inet_addr(server_ip);
ret = connect(connSock, (struct sockaddr *) &servaddr, sizeof (servaddr));
if (ret == -1)
{
perror("connect()");
close(connSock);
exit(1);
}
if(due_to_some_condition_got_new_server_ip){
------------------------------> I have new server_ip2 to connect
}
Run Code Online (Sandbox Code Playgroud)
这是不可能的。
打开一个新套接字。
即使有可能,也不会比打开一个新套接字更快。连接套接字的缓慢部分是您的计算机必须向另一台计算机发送数据包并获得回复。无论您连接同一个套接字还是不同的套接字,都会发生这种情况。
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |