iOS学习程序员

socket网络编程之一(TCP套接字API)

2017-09-13  本文已影响961人  无心雨眸

socket是对TCP/IP协议族的封装,并对网络编程开发人员提供可用的接口,可以说,任何网络编程都离不开socket,要想熟练运用网络编程技术,必须掌握socketAPI.本篇文章便是对socketAPI的介绍.

套接字地址结构

IPV4套接字地址结构

typedef __uint32_t  in_addr_t;

struct in_addr {
    in_addr_t s_addr;     /* 32位的IP地址 */
};                                      /* 网络子节序 */

struct sockaddr_in {
    __uint8_t   sin_len;      /* 结构体的长度 */
    sa_family_t sin_family;      /* AF_INET协议族 */
    in_port_t   sin_port;               /* 16位的端口号,网络子节序 */
    struct  in_addr sin_addr; /* 32位IP地址 */
    char        sin_zero[8];  /* unused */
};

通用套接字地址结构

strict sockaddr{
     __uint8_t ss_len;
    sa_family_t  sa_family;
    char sa_data[14];
}

当套接字地址结构作为一个参数传递进任何套接字函数时,套接字地址结构总是以指针的形式来传递,然而以这样的指针作为参数之一的任何套接字函数,必须处理来自任何协议族的套接字地址结构。因此ANSIC便创造了通用套接字地址结构,当时候IPV4套接字地址结构传递时,需要进行强制转换.

套接字函数

socket函数

#inclucde<sys/socket.h>
int socket(int family,int type,int protocol);

connection函数

#include<sys/socket.h>
int connection(int sockfd,const struct *sockaddr,socklen_t addrlen);

bind函数

#include<sys/socket.h>
int bind(int sockfd,const struct sockaddr *myaddr,sickle_t addrlen);

listen函数

#include<sys/socket.h>
int listen(ins sockfd,int backlog);

accept函数

#include<sys/socket.h>
int accept(int sockfd,struct sockaddr * clientaddr,socklen_t *addrlen);

总结

本文对tcp套接字的API的各个函数进行了介绍,上面介绍的函数是理解TCP套接字编程的基础,下一篇文章,将会运用本章所介绍的函数,编写一个客户服务端程序.

上一篇 下一篇

猜你喜欢

热点阅读