美文网首页
socket API

socket API

作者: 哟破赛呦 | 来源:发表于2019-01-28 18:08 被阅读0次

socket 结构

image

socket

#include <sys/types.h> 
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
  • domain:
    填地址族 AF_INET,AF_INET6,AF_UNIX
  • type:
    SOCK_STREAM: 使用面向连接的流传输协议
    SOCK_DGRAM: 使用无连接的数据报协议
  • protocol:
    0 : 默认协议,流传输默认tcp,数据报默认udp
  • retrurn
    成功返回一个新的套接字sockfd,失败返回-1并设置errno

bind 给本地套接字赋予地址和端口

#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
  • sockfd:
    sock套接字
  • addr:
    sockaddr结构体,强转sockaddr_insockaddr_in6
  • addrlen:
    addr结构体实际大小
  • return:
    成功返回0,失败返回­-1, 设置errno

listen 开始监听

#include <sys/socket.h>
int listen(int sockfd, int backlog);
  • sockfd:
    参数为成功调用socket函数返回的套接字,并已经成功调用了bind()
  • backlog:
    参数告诉套接字在忙于处理上一个请求时,还可以接受多少个进入的请求。
  • retrun:
    调用成功返回0,失败返回­-1,设置errno
  • 查看系统默认backlog
    cat /proc/sys/net/ipv4/tcp_max_syn_backlog

accept 接受网络连接

#include <sys/types.h>
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
  • sockfd:
    参数为成功调用socket函数返回的套接字,并已经成功调用了 bind()listen()
  • addr:
    传出参数,返回连接客户端地址信息,含IP地址和端口号。(如果使用IPv4地址族,那么它需要我们填个指向sockaddr_in结构的指针)
  • addrlen:
    传入传出参数,传入sizeof(addr)大小,函数返回时返回真正接收到地址结构体的大小
  • return:
    成功返回一个新的socket文件描述符,用于和客户端通信,失败返回­-1,设置errno

connect 连接远程主机

请求连接是客户端的动作,TCP/IP客户端需要调用connect()去连接一个服务器:

#include <sys/types.h>
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
  • sockfd:
    参数是成功调用socket()返回的套接字。
  • addr:
    传入参数,指定服务器端地址信息,含IP地址和端口号
  • addrlen:
    传入参数,如IPV4传入sizeof(struct sockaddr_in)大小
  • return
    如果调用成功,表示连接已经建立(三次握手完成),返回0。否则返回 ­-1,设置errno

socket I/O

对于套接字的I/O有很多API可以用,如send()recv()readv()writev()sendmsg()recvmsg()read()write()等等。只介绍常用的I/O接口read()write()

#include <unistd.h>
int read(int sockfs, void *buf, size_t nbytes);
int write(int sockfd, void *buf, size_t nbytes);

关闭套接字

#include <unistd.h>
int close(int sockfd);

调用close()会触发四次握手关闭连接。

实例

待补充。。。

相关文章

  • iOS socket套接字

    socket包含的API 创建及调用 创建socket 绑定 ip port 连接socket 关闭socket ...

  • socket API

    IPv4套接口地址结构 struct sockaddr_in {uint8_tsin_len;4sa_family...

  • socket API

    socket 结构 socket domain:填地址族 AF_INET,AF_INET6,AF_UNIX typ...

  • Python Socket 编程详细介绍

    Python 提供了两个基本的 socket 模块: Socket它提供了标准的BSD Socket API。 S...

  • 二十四:Python之socket

    socket:通过网络完成进程间通信的方式,socket也被称作 ‘套接字’ Socket本质是编程接口(API)...

  • socket server 篇章

    socket 库 步骤一:端口和IP 步骤二:创建socket 步骤3:将端口和地址 赋值给socket api ...

  • iOS中的Socket的使用

    Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,...

  • iOS中socket使用

    Socket是对TCP/IP协议的封装,Socket本身并不是协议, 而是一个调用接口(API),通过Socket...

  • iOS网络操作

    iOS提供的API socket 方式 IOS 提供的socket 方式的网络编程接口为CFSocket。CFSo...

  • Socket接口使用方法

    Linux内核net/socket.c定义了一套socket的操作api。图1展示了socket层所处与TCP/I...

网友评论

      本文标题:socket API

      本文链接:https://www.haomeiwen.com/subject/vrxzjqtx.html