嵌入式开发之--linux网络编程基础学习
时间:2011-04-04 来源:Roberts
linux网络概述:(服务器使用)
1、完善的内置网络:协议丰富。和内核结合的很好。
2、支持大量的网络软件。
3、提供了很多网络命令。
4、远程访问方便。
5、安全可靠。
6、TCP/IP参考模型。(应用层、传输层、网络层、网络接口层)
linux网络编程基础:
1、套接字:socket是一种文件描述符。
1、流式套接字:SOCK_STREAM(tcp)安全可靠
2、数据包套接字:SOCK_DGRAM(udp)实时性好
3、原始套接字:SOCK_RAM(ip)
2、网络地址结构:
1、struct sock_addr
2、struct sockaddr_in
3、struct in_addr
3、整数与ip地址之间的转换
1、点分十进制转换为32位整数:inet_aton
2、32位整数转换为点分十进制:inet_ntoa
4、字节序转换:
1、网络上传输的字节序:big_endian(先传低字节)
2、htonl()
3、htons()
4、ntohl()
5、ntohs()
5、socket编程函数
1、创建一个socket:socket()
2、绑定ip和端口号到socket:bind()
3、等待连接(设置最大的连接数):listen()
4、与服务器建立连接:connection()
5、在一个端口上等待连接:accept()
6、发送数据:send()
7、接收数据:recv()
8、关闭socket:close()
基于TCP的服务器:
1、socket()
2、bind()
3、listen()
4、accept()(阻塞等待连接请求)
5、read()(重复动作)
6、write()
7、close()
基于TCP的客户端:
1、socket()
2、connect()
3、write()
4、read()
5、close()
基于UDP的服务器:
1、socket()
2、bind()
3、recvfrom()(阻塞。。。)
4、sendto()
4、close()
基于UDP的客户端:
1、socket()
2、bind()
3、sendto()
4、recvfrom()(阻塞。。。)
5、close()
服务器模型:
1、循环服务器:
2、并发服务器: