代码改变世界

linux网络编程

2010-12-11 22:18  OCaml  阅读(386)  评论(0编辑  收藏  举报

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()
        5、close()

 

基于UDP的客户端:
        1、socket()
        2、bind()
        3、sendto()
        4、recvfrom()(阻塞。。。)
        5、close()

 

服务器模型:
        1、循环服务器:

        2、并发服务器: