Unix Network Programming(10)---connect 函数

TCP客户用connect函数来建立与TCP服务器的连接。

#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);    /*返回:若成功则为0,若出错则为-1*/

函数解析:sockfd是由socket函数返回的套接字描述符,第二个和第三个参数分别为一个指向套接字地址结构的的指针该结构的大小。套接字地址结构必须含有服务器的IP地址端口号

如果是TCP套接字,调用connect函数将激发TCP的三路握手过程,而且尽在连接建立成功或出错时才返回:

  1. 若TCP客户没有收到SYN分节的响应,则返回ETIMEDOUT错误。
  2. 若对客户的SYN响应是RST(表示复位),则表明该服务器主机在我们指定的端口上没有进程在等待与之连接(例如服务器进程也许没有正在运行)。硬错误(hard error),客户一接受到RST就马上返回ECONNREFUSED错误。
    RST:在TCP发生错误时发送的一种TCP分节,三个条件:目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器;TCP想取消一个已有连接;TCP接收到一个根本不存在的连接上的分节。
  3. 客户发出SYN在中间某个路由器引发“destination enreachable”的ICMP错误,则认为是一种“软错误(soft error)”。客户内核保存该消息,并按一定间隔进行重传,若在某个规定时间内仍未收到响应,则把保存的信息(ICMP错误)作为EHOSTUNREACH或ENETUNREACH错误返回给进程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值