socket函数

这些函数根据功能的不同可以分为如下几类:

       (1) 套接字函数。此类函数包括sockets(),bind(),getpeername(),getsockname()和closesocket(),它们主要完成创建,关闭套接字功能,以及对套接字命名与名字获取。

       (2) 网络连接函数。此类函数包括listen(),accept(),connect()和shutdown(),它们完成网络连接(如虚电路)的建立与关闭。此类函数中有部分可阻塞。

       (3) 数据传输函数。此类函数包括send(),recv(),sendto()和recvfrom(),它们完成网络数据的发送与接收,全部是可以阻塞的函数。

       (4) 字节定序函数。此类函数包括htonl(),htons(),ntohl()和ntohs(),它们完成主机和网络之间数据字节顺序的转换。

       (5) 地址转换函数。此类函数包括inet_addr(),inet_ntoa(),它们完成网络字符串地址和Internet地址之间的转换。

       (6) 套接字控制函数。此类函数包括getsockopt(),setsockopt(),ioctlsocket()和select(),它们设置/获取套接字的选项,控制/检测套接字的工作状态。其中select()函数在必要时可能阻塞。


在int sockfd=socket(AF_INET,DGRAM,0)后,系统有没有给进程分配端口号呢?怎样查看呢?还是在后面进行操作时候才分配吗??

UDP客户端在建立了插口后会直接用sendto函数发送数据,还隐含了一个操作,
那就是在发送数据之前,UDP会首先为该插口选择一个独立的UDP端口(在1024
-5000之间),将该插口置为已绑定状态。如果一个UDP客户端在建立了插口后
首先用bind函数指明了本地地址/端口,也是可以的,这样可以强迫UDP使用指
定的端口发送数据。(事实上,UDP无所谓服务器和客户端,这里的界限已经模
糊了。)

在计算机网络编程中,socket函数通常用于创建一个网络通信的端点。不同的编程语言和操作系统可能提供了不同风格的API。以类Unix系统中常见的C语言API为例,socket函数的基本形式如下: ```c int socket(int domain, int type, int protocol); ``` 参数解释如下: 1. `domain`:指定通信领域(Address Family),即使用的地址类型。常见的地址族包括: - `AF_INET`:IPv4互联网地址族,使用IPv4地址。 - `AF_INET6`:IPv6互联网地址族,使用IPv6地址。 - `AF_UNIX` 或 `AF_LOCAL`:本地通信地址族,用于本地进程间通信。 2. `type`:指定socket类型,这决定了socket的行为。常见的socket类型有: - `SOCK_STREAM`:流式socket,提供可靠的面向连接的通信流。通常用于TCP协议。 - `SOCK_DGRAM`:数据报式socket,提供无连接的通信服务。通常用于UDP协议。 - `SOCK_RAW`:原始套接字,允许直接操作底层协议。 - `SOCK_SEQPACKET`:有序分组socket,提供有序的、可靠的、基于记录的连接方式。 3. `protocol`:指定使用的协议。通常在指定了`domain`和`type`后,这个参数可以设置为0,表示由系统根据前面两个参数自动选择合适的默认协议。如果需要使用特定的协议,可以设置为该协议对应的特定值。 创建socket后,通常还需要通过其他函数如`bind`, `connect`, `listen`, `accept`, `send`, `recv`等来进行进一步的操作,完成网络通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值