linux网络编程接口,linux网络编程c++基础(socket)

名词:

1.套接字:IP+端口,套接口是端口

2.网络地址:在网络这张大网的唯一编号,IP地址,包含网络ID和主机ID,分为ABCDE类

ABC类网络ID长度分别为8位,16位,24位(IPv4)

A:0.0.0.0~127.255.255.255

B.128.0.0.0~191.255.255.255

C:192.0.0.0~223.255.255.255

D:224.0.0.0~239.255.255.255

E:240.0.0.0~247.255.255.255

最常用的是BC类,刚ping了一下百度220.181.38.150。C类

linux下socket编程可以概括为以下几个函数的运用:

socket():

socket就相当于声明传输格式

socket(PF_INET,SOCK_STREAM,0);

int socket( int af, int type, int protocol);(定义)

af:一个地址描述。仅支持AF_INET格式,也就是说ARPA Internet地址格式。

type:指定socket类型。新套接口的类型描述类型,如TCP(SOCK_STREAM)和UDP(SOCK_DGRAM)。常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等。

protocol:顾名思义,就是指定协议。套接口所用的协议。如调用者不想指定,可用0。常用的协议有,IPPROTO_TCP、IPPROTO_UDP、IPPROTO_STCP、IPPROTO_TIPC等,它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。

返回值是套接字。

bind():

int bind( int sockfd , const struct sockaddr * my_addr, socklen_t addrlen);

sockfd 表示已经建立的套接字;

my_addr 是一个指向sockaddr结构体类型的指针;

addrlen表示my_addr结构的长度,可以用sizeof操作符获得。

listen():

int listen( int sockfd, int backlog);

sockfd:用于标识一个已捆绑未连接套接口的描述字。

backlog:等待连接队列的最大长度。

connect():

int connect(SOCKET s, const struct sockaddr * name, int namelen);

s:标识一个未连接socket

name:指向要连接套接字的sockaddr结构体的指针

namelen:sockaddr结构体的字节长度

accept():

SOCKET accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

sockfd:套接字描述符,该套接口在listen()后监听连接。

addr:(可选)指针,指向一缓冲区,其中接收为通讯层所知的连接实体的地址。Addr参数的实际格式由套接口创建时所产生的地址族确定。

addrlen:(可选)指针,输入参数,配合addr一起使用,指向存有addr地址长度的整型数。

recv():

int recv( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags);

该函数的第一个参数指定接收端套接字描述符;

第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据;

第三个参数指明buf的长度;

第四个参数一般置0。

recv(client_sockfd,buf,BUFSIZ,0);

send():

int send( SOCKET s, const char FAR *buf, int len, int flags );

(1)第一个参数指定发送端套接字描述符;

(2)第二个参数指明一个存放应用程序要发送数据的缓冲区;

(3)第三个参数指明实际要发送的数据的字节数;

(4)第四个参数一般置0。

close():

close(client_sockfd);

关闭套接字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值