网络编程基础(一)

网络编程基础

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

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

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

       有两种协议可以选择:

      (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 服务程序以及其占用的端口号

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值