套接字学习之tcp连接的建立

2 篇文章 0 订阅
已经看过很多遍的网络编程相关内容,但一次偶然的面试总居然发现已经忘得七七八八甚至还不如刚出校门时,于是觉得不能再眼高手低了,
需要重新拿起书本复习复习,所以就有了下面的博文,希望我能坚持学习,坚持努力。
   tcp连接的建立总的来说就是一个跟电话系统类似的套路:
   对于服务器:
   1.  建立一个socket用于通信(类似listenfd = socket(AF_INET, SOCK_STREAM, 0))
   2.  绑定一个地址好让别人能找到你
      类似:
       struct sockaddr_in servaddr;  
       /*连接类型*/
       servaddr.sin_family = AF_INET;
       /*绑定任意地址*/
       servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
       /*将端口从主机字节序装换成网络字节序*/
       servaddr.sin_port = htons(8888);
       bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr))
3.  监听,如同打开电话振铃,这叫被动打开
    listen(listenfd, 10);
4.  等待连接
    for(; ;)
    {
    /*监听被动打开套接字listenfd以等待连接,如果我们不关心对端的信息,就直接忽略第二个和第三个参数,但要注意第三个参数是指针(socklen_t *addrlen)*/
    connfd = accept(listenfd, NULL, NULL);/*connfd > 0 or occur error*/
    read();
    write();
    close(connfd);
    }
对于客户端:
  1.  建立套接字,类似于服务器,只是这个套接字是主动打开套接字
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
2.  连接服务器
    servaddr.sin_family = AF_INET;
    servaddr.port = htons(8888);
    /*将点分十进制的ip地址转换成合适的格式后给sin_addr*/
    inet_pton(AF_INET, serverIp, &servaddr.sin_addr);
    connect(sockfd, (struct sockaddr_in)&servaddr, sizeof(servaddr));
    write();
    close(sockfd);
    return 0;
建立和终止过程:

    ![tcp建立连接和关闭过程](https://img-blog.csdn.net/20160903181559614)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值