网络编程基础(一)

来源:互联网 发布:服装面料软件 编辑:程序博客网 时间:2024/06/05 04:49

网络编程基础

       网络编程的实现就必须有服务器和客户端的存在

       服务器:为客户提供服务的一方

       客户端:获取数据的为客户端,可以是任意一台主机,只要它和服务器存在连接,并且的到服务器的授权,就可以使用服务器提供的服务

       有两种协议可以选择:

      (1)TCP:面向连接的      可靠的          流式服务

      (2)UDP:无连接             不可靠的      数据包服务

       TCP 的编程流程:

               服务器(server):socket    bind    listen    accept    recv/send    close

               客户端(client):socket    /*bind*/    connect    recv/send    close

               int socket(int domain, int type, int protocol);

                   domain 参数告诉系统使用哪个底层协议族

                   type 参数指定服务类型。服务类型主要有 SOCK_STREAM 服务(流服务)和 SOCK_UGRAM (数据报)服务,对 TCP/IP协议族而言,其值取 SOCK_STREAM 表示传输层使用 TCP 协议,取 SOCK_DGRAM 表示传输层使用 UDP 协议。

                   protocol 参数是在前两个参数构成的协议集合下,再选择一个具体的协议,不过这个值通常通常都是唯一的(前两个参数已经完全决定了它的值)。几乎在所有的条件下,我们都应该把它设置为 0,表示使用默认协议。

                   socket 系统调用成功时返回一个 socket 文件描述符,失败则返回 -1并设置errno。


              int bind(int sockfd, struct sockaddr *addr, int addrlen);

                  addr:指定 IP 地址和端口号

                  struct sockaddr_in

                  {

                      sa_family_t sin_family;    //地质族    AF_INET

                      u_int16_t sin_port;    //端口号    网络字节序(大端模式)    PC 机(小端模式)

                      struct in_addr sin_addr;    //IP 地址

                  }

                  struct in_addr

                  {

                      u_int32_t s_addr;    //IP 地址最终的表示

                  }


             int listen(int sockfd, int size);


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

                 addr:记录客户端的 IP 地址和端口号

                 accept 的返回值是获取到的和客户端连接的文件描述符

             int connect(int sockfd, struct sockaddr *addr, int addrlen);

                 addr:要连接的服务器的 IP 地址和端口号

             netstat -atp    显示本机上所有的 TCP 服务程序以及其占用的端口号

原创粉丝点击