LINUX学习笔记18——网络编程

 

a)         Socket:文件描述符

1.         作用:实现LINUX的网络编程

2.         分类:

a)         留式套接字:使用TCP协议(SOCK_STREAM)安全性

b)         数据报套接字:使用UDP协议(SOCK_DGRAM)快速

c)         原始套接字:使用IP协议:(SOCK_RAW)

3.         网络地址:结构体

a)         Struct sockaddr

1.         {u_short sa_family;  采用哪种协议

2.         Char sa_data[14];}   14字节特定协议地址

b)         Struct sockaddr_in

1.         {u_short sin_family;  采用哪种协议 AF_INET

2.         Unsigned short int sin_port; 端口号  htons(portnumber)自己定义

3.         Struct in_addr sin_addr;  协议特定地址 htonl(INADDR_ANY)

4.         Unsigned char sin_zero[8];}  没有用,填0

4.         地址转换:

a)         Int inet_aton(const char *cp, struct in_addr *inp)

1.         作用:将IP地址转换为32位的IP

b)         Char *inet_ntoa(struct in_addr in)

1.         作用:将32位的IP转换为IP地址

5.         网络字节序:统一big endian:低位在前,先传输

a)         htons: 把unsigned short 类型从主机序转换到网络序

b)         htonl: 把unsigned long 类型从主机序转换到网络序

c)         ntohs: 把unsigned short 类型从网络序转换到主机序

d)         ntohl: 把unsigned long类型从网络序转换到主机序

6.         IP与主机名;网络中标识一台主机

a)         Struct hostent *gethostbyname(const char *hostname)

b)         作用:通过主机名得到IP地址

c)         Struct hostent

1.         {char *h_name;  :主机正式名称

2.         Char *h_aliases  :主机别名

3.         Int h_addrtype;   :地址类型

4.         Int h_length;     :地址长度

5.         Char **h_addr_list;}  :IP地址列表

6.         #define h_addr h_addr_list[0]  :主机的第一个IP地址。

7.         创建socket:int socket(int domain,int type,int protocol);

a)         #include<sys/types.h>,#include<sys/socket.h>

b)         Domain:指定使用何种的地址类型,AF_INET Ipv4网络协议

c)         Type:SOCK_STREAM 提供双向连续且可信赖的数据流,即TCP

d)         Protocol:指定socket所使用的传输协议编号,通常此参考不用管它,设为0即可。

e)         返回值:成功则返回socket处理代码,失败返回-1

8.         绑定IP与SOCKET:int bind(int sockfd,struct sockaddr * my_addr,int addrlen);

a)         #include<sys/types.h>,#include<sys/socket.h>

b)         Sockfd:socket的字符,通过socket返回

c)         my_addr:网络地址结构体的地址

d)         addrlen为sockaddr的结构长度

e)         返回值:成功则返回0,失败返回-1,错误原因存于errno中。

9.         服务器连接connect:int connect (int sockfd,struct sockaddr * serv_addr,int addrlen);

10.     最大连接listen:int listen(int s,int backlog);

a)         S:socket字符

b)         Backlog:指定同时能处理的最大连接要求

c)         返回值:成功则返回0,失败返回-1,错误原因存于errno

11.     等待请求accept:int accept(int s,struct sockaddr * addr,int* addrlen);

a)         #include<sys/types.h>,#include<sys/socket.h>

b)         S:socket字符

c)         返回值:返回一个新的socket处理代码,往后的数据传送与读取就是经由新的socket处理,而原来参数s的socket能继续使用accept()来接受新的连线要求。失败返回-1,错误原因存于errno中。连线成功时,参数addr所指的结构会被系统填入远程主机的地址数据

12.     发送数据send:int send(int s,const void * msg,int len,unsigned int falgs);

a)         #include<sys/types.h>,#include<sys/socket.h>

b)         作用:用来将数据由指定的socket 传给对方主机。参数msg指向欲连线的数据内容,参数len则为数据长度。参数flags一般设0

c)         返回值:成功则返回实际传送出去的字符数,失败返回-1。错误原因存于errno

13.     接收数据recv:int recv(int s,void *buf,int len,unsigned int flags);

a)         作用:用来接收远端主机经指定的socket传来的数据,并把数据存到由参数buf 指向的内存空间,参数len为可接收数据的最大长度。

b)         #include<sys/types.h>,#include<sys/socket.h>

c)         S:socket字符

d)         flags一般设0

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值