zoukankan      html  css  js  c++  java
  • TCP server和client

    http://blog.csdn.net/hguisu/article/details/7445768/

    原文:http://www.cnblogs.com/dolphinX/p/3460545.html

          :http://goodcandle.cnblogs.com/archive/2005/12/10/294652.aspx

          :http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html

          :http://www.cnblogs.com/skynet/archive/2010/12/11/1903347.html

    一.server和client整体流程(及Unix下的socket API)

    1.

    int socket(int domain, int type, int protocol);

    根据指定的地址族、数据类型和协议来分配一个socket的描述字及其所用的资源。

    domain:协议族,常用的有AF_INET、AF_INET6、AF_LOCAL、AF_ROUTE其中AF_INET代表使用ipv4地址

                注: 头文件socket.h中有 #define AF_INET PF_INET

    type:socket类型,常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等

    protocol:协议,常用的协议有IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等

    2.

    int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

    把一个地址族中的特定地址赋给socket

    sockfd:socket描述字,也就是socket引用

    addr:要绑定给sockfd的协议地址

    addrlen:addr的长度

    通常服务器在启动的时候都会绑定一个众所周知的地址(如ip地址+端口号),用于提供服务,客户就可以通过它来接连服务器;而客户端就不用指定,有系统自动分配一个端口号和自身的ip地址组合。这就是为什么通常服务器端在listen之前会调用bind(),而客户端就不会调用,而是在connect()时由系统随机生成一个。

    3.

    int listen(int sockfd, int backlog);

    监听socket

    sockfd:要监听的socket描述字

    backlog:相应socket可以排队的最大连接个数

    4.

    int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

    连接某个socket

    sockfd:客户端的socket描述字

    addr:服务器的socket地址

    addrlen:socket地址的长度

    5.

    int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

    TCP服务器监听到客户端请求之后,调用accept()函数取接收请求

    sockfd:服务器的socket描述字

    addr:客户端的socket地址

    addrlen:socket地址的长度

    6.

    ssize_t read(int fd, void *buf, size_t count);

    读取socket内容

    fd:socket描述字

    buf:缓冲区

    count:缓冲区长度

    7.

    ssize_t write(int fd, const void *buf, size_t count);

    向socket写入内容,其实就是发送内容

    fd:socket描述字

    buf:缓冲区

    count:缓冲区长度

    8.

    int close(int fd);
    socket标记为以关闭 ,使相应socket描述字的引用计数-1,当引用计数为0的时候,触发TCP客户端向服务器发送终止连接请求。
  • 相关阅读:
    Salesforce API的概念
    Salesforce Iot / salesforce 物联网
    Salesforce Ant 元数据迁移工具(学习笔记)
    Lightning Component 控制样式显示隐藏的两种方式;
    Lightning Component 嵌入到 VF Page
    salesforce 页面开发
    Lightning Component 开发笔记以及注意事项
    salesforce 打印文档(内部类,子查询)
    小程序知识点
    js创建对象的几种方式
  • 原文地址:https://www.cnblogs.com/cj2014/p/5047612.html
Copyright © 2011-2022 走看看