socket编程

Socket套接字

套接字是操作系统内核中的一个数据结构,是网络中节点进行相互通信的门户,可以标识一个网络进程的ID。

将TCP/IP消息进行了隐藏在了socket接口下

套接字 = (IP地址,端口号)

套接字分类

  • 流式socket (SOCK_STREAM):用于TCP协议
  • 数据报socket (SOCK_DGRAM):用于UDP协议
  • 原始socket (SOCK_RAW):用于测试新的网路协议

套接字数据结构

struct sockaddr_in

struct sockaddr_in{
    short int sa_family;  //协议族
    unsigned short int sin_port;  //端口号
    struct in_addr sin_addr;  //IP地址
    unsigned char sin_zero[8];  // 填充0,无特别意义
}
struct in_addr{
    unsigned long int s_addr; //32位的IPv4地址,网络字节序
}

#include <netinnet/in.h>  //头文件
sa_family:AF_INET IPv4协议;AF_INET6 IPv6协议

如何使用socket?

例子1 例子2

服务器端

  • 创建socket,绑定到服务器的IP和端口
  • 开始监听 listen
  • 等待并接受客户端的连接请求,返回新的socket(accept
  • 由新的socket与客户端进行读写write和read
  • 关闭连接

客户端

  • 创建socket(绑定本机随机端口,这个系统自行完成)
  • 连接服务器(connect),与服务器进行读写write和read
  • 关闭连接

img

posted @ 2020-07-13 13:19  happy_fan  阅读(107)  评论(0编辑  收藏  举报