2024年Linux最新Linux C++ UDP Socket(超详细)_c+(2)

UPD通讯

2. API

详细API请参考:https://pubs.opengroup.org/onlinepubs/007908799/xns/syssocket.h.html

  • 创建套接字的函数是socket()
int socket(int domain, int type, int protocol);

/\*
- 其中 “int domain”参数表示套接字要使用的协议簇,协议簇的在“linux/socket.h”里有详细定义,常用的协议簇:
AF\_UNIX(本机通信)
AF\_INET(TCP/IP – IPv4)
AF\_INET6(TCP/IP – IPv6)

- 其中 “type”参数指的是套接字类型,常用的类型有:
SOCK\_STREAM(TCP流)
SOCK\_DGRAM(UDP数据报)
SOCK\_RAW(原始套接字)

- 最后一个 “protocol”一般设置为“0”,也就是当确定套接字使用的协议簇和类型时,这个参数的值就为0,但是有时候创建原始套接字时,并不知道要使用的协议簇和类型,也就是domain参数未知情况下,这时protocol这个参数就起作用了,它可以确定协议的种类。
socket是一个函数,那么它也有返回值,当套接字创建成功时,返回套接字,失败返回“-1”,错误代码则写入“errno”中。
\*/

// 实例
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/socket.h>
	int sock_fd_tcp;
    int sock_fd_udp;
    sock_fd_tcp = socket(AF_INET, SOCK_STREAM, 0);     // 创建tcp通讯的套接字
    sock_fd_udp = socket(AF_INET, SOCK_DGRAM, 0);	   // 创建udp通讯的套接字
    if(sock_fd_tcp < 0) {
        perror("TCP SOCKET ERROR!\n");
        exit(-1);
     }
 
    if(sock_fd_udp < 0) {
        perror("UDP SOCKET ERROR!\n");
        exit(-1);
     }

  • 地址与端口设置的结构体 sockaddr_in
#include <netinet/in.h>
   
struct sockaddr\_in{
     unsigned short         sin_family;    
     unsigned short int     sin_port;      
     struct in\_addr         sin_addr;      
     unsigned char          sin_zero[8];   
};

struct in\_addr{
     unsigned long     s_addr;
};
/\*
sin\_family表示地址类型,对于基于TCP/IP传输协议的通信,该值只能是AF\_INET;
sin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值