首页 > 代码库 > Linux网络编程------网络编程基础

Linux网络编程------网络编程基础

Socket(套接字),类似文件描述符,三种

1、流式套接字(SOCK_STREAM):可以提供可靠的、面向连接的通讯流,它使用TCP协议。TCP保证了数据传输的正确性和顺序性。

2、数据报套接字(SOCK_DGRAM):定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错,它使用数据报协议(UDP)。

3、原始套接字(SOCK_RAW):直接基于IP协议。

网络地址

struct sockaddr用于记录网络地址:

struct sockaddr

{

  u_short sa_family;//协议族,采用“AF_xxx”形式,如:AF_INET(IP协议族)

     char sa_data[14];//14字节特定协议地址

}

但常用的是sockaddr_in记录网络地址

struct sockaddr_in

{

  short int sin_family;//协议族

      unsigned short int sin_port;/*端口号*/

      struct in_addr sin_addr;//协议特定地址

      unsigned char sin_zero[8];/*填0*/

}

struct in_addr{

  union{

    struct{

        unsigned char s_b1,s_b2,s_b3,s_b4;

      }S_un_b;

    struct{

        unsigned short s_w1,s_w2;

      }S_un_w;

  unsigned long S_addr;

  }S_un_w;

}IN_ADDR;

网络上bigendian(低字节先传输)

socket 编程函数

socket:创建套接字

bind:用于绑定IP地址和端口号到socket

connect:该函数用于与服务器建立连接

listen:设置服务器能处理的最大连接要求

accept:等待来自用户客户端的socket连接请求

send:发送数据

recv:接收数据