Socket编程基础--Socket API介绍

1. 建立套接字: SOCKET socket(socket af, int type , int protocol);        出错码(SOCKET_ERROR).
        af(address family):
              指示地址族. Windows仅支持AF_INET(TCP/IP地址)
        type:类型描述.
              SOCK_STREAM:流Socket,定义一种可靠的,面向连接的服务,TCP.
              SOCK_DGRAM:数据报Socket,定义一种无连接的报务,  UDP.
              SOCK_RAM:原始Socket.主要用于一些协议的开发和测试新的网络协议,对IP或者ICMP直接访问。IP欺骗  就需要用到。
              SOCK_SEQPACKET:定序分组Socket. SOCK_RDM:可靠发送的消息。
         protocol:套接字所用的协议。
               IPPROTO_IP 0 IPPROTO_ICMP 1  IPPROTO_TCP 6  IPPROTO_UDP 17  IPPROTO_RAW 255
       改变Socket属性: int setsockopt(socket sock_id, int level, int optname, cont char FAR *optval, int *optlen);
               sock_id:   标识一个套接字.
               level:         选项定义的层次,目前仅支持SOL_SOCKET,IPPROTO_TCP层次。
               optname: 需设置的选项.
               optval:       指针,指向存放选项值的缓冲区.
               optlen:      缓冲区的长度.
           
2. 绑定IP、端口: int bind(socket sock_id, struct sockaddr *local_addr, int addr_len);     
        sock_id: 本地的socket标识符
        local_addr: 指向有本机IP、端口号等信息的sockaddr类型的指针。
        addr_len: sockaddr的长度。 常用sizeof(struct sockaddr).
 
3. 接受一个连接: int accept(socketsock_id, struct sockaddr *client_addr, int  *addr_len);
        sock_id:        本地socket标识符.
        client_addr:  一个指向客户Socket地址结构的指针.
        addr_len:      一个指向值为sizeof(struct sockaddr_in)的整型的指针变量.
 
4. 与远程服务器建立一个TCP连接: int connect(socketsock_id, struct sockaddr *serv_addr, int addr_len);
        sock_id:       发出请求的socket标识符.
        serv_addr:  一个指向服务器socket地址结构的指针.
        addr_len:   服务器的socket地址长度.
 
5. 监听是否有服务请求: int listen(socket sock_id, int quelen);
         sock_id:    本地的socket标识符.
         quelen:      请求队列中运行的最大请求数。
 
6.面向连接数据传输: int send(socket sock_id, const char FAR *buffer, int buff_len, int flags);  //可控缓冲发送
         sock_id:   本地socket标识符.
         buffer:       一个指向发送缓冲区的指针.
         buff_len: 发送缓冲区的大小.
         flags:       调用的执行方式.   --0
                                                        MSG_OOB 0x1                  //带外数据,也称为TCP紧急数据. 
                                                        MSG_DONTROUTE 0x4  //不要将包路由出去.
   int recv(socket sock_id, const char FAR *buffer, int buff_len, int flags);  //可控缓冲接收
        sock_id:  发出请求的socket标识符.
        buffer:     一个指向接收缓冲区的指针.
        buff_len: 接收缓冲区的大小.
        flags:       指定调用方式.   --0
                                                        MSG_OOB 0x1                  //带外数据,也称为TCP紧急数据. 
                                                        MSG_PEEK 0X2  //使有用的数据复制到缓冲区内,但并不从系统缓冲区内删除。
7.不面向连接数据传输:  int sendto(socket sock_id, cont char FAR *buffer, int buff_len, int flags, const  struct sockaddr FAR *to, int to_len);
        to:          指针, 指向目的套接字的地址结构(SOCKADDDR 结构).
        to_len:  所指地址结构的长度.
   int recvfrom(socket sock_id, cont char FAR *buffer, int buff_len, int flags, const  struct sockaddr FAR *from,     int from_len);
        from:          指针, 用来接收发送方套接字地址结构信息.
        from_len:  指向SOCKADDR地址的长度.
8. 关闭一个套接字: int closesocket(socket sock_id);
     禁止在一个套接字上进行数据的接收与发送: int shutdown(socket sock_id, int how);
         how:  用于描述禁止哪些操作. 
                       取值: SD_REVIEVE: 不允许再调用接收函数.
                                 SD_SEND:      不允许再调用发送函数.
                                 SD_BOTH:      取消连接两端的收发操作.
                           
                                                            
    
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值