Socket编程

1 什么是API

        经常听说API,那么API到底是个什么东西啊?通俗点讲,就是操作系统提供的一系列方法,按照正确的协议和格式,去调用这些方法,就能实现对操作系统的调用(可能是这样的吧)。

在网络编程中,应用层通过应用层协议,来完成应用进程间的通信,但是这些信息的传送,就需要用到操作系统来控制了,从应用层到传输层,就是从应用进程到操作系统了,需要使用到API,而网络编程中常使用的API就是socket套接字了。

 2 Socket

         应用层中可能会有多个进程,那么怎么区分不同进程是哪个套接字呢,就是之前提到的端口号。

         操作系统是如何管理这些套接字的呢?

         那么这么去设置一个套接字?声明变量,初始化结构图。

2.1 Socket常用API函数

        socket创建函数:

         其中第二个参数套接字的类型,分别面向不同的传输层协议:

         Socket关闭函数:

         服务器端的监听函数:

         客户端链接函数

         服务端为了能够实现并发的为客户端提供服务,通常在监听端套接字接受请求后,会开创一个新的套接字与客户进行通信,这样监听套接字就能一直接受请求了,

 

 

 2.2 网络字节转换的问题

        这实际上就是一个数据存储大小端的问题。网络上传输的数据都是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它将这个字节作为高位字节还是低位字节处理。
  UDP/TCP/IP协议规定:把接收到的第一个字节当作高位字节看待,这就要求发送端发送的第一个字节是高位字节;而在发送端发送数据时,发送的第一个字节是该数值在内存中的起始地址处对应的那个字节,也就是说,该数值在内存中的起始地址处对应的那个字节就是要发送的第一个高位字节(即:高位字节存放在低地址处);由此可见,多字节数值在发送之前,在内存中因该是以大端法存放的;所以说,网络字节序是大端字节序;
  在实际中,如果本地主机使用的是小端存储数据,就涉及到了网络字节转换这个问题了。

 3 客户端软件设计

 4 服务器软件设计

 4.1 循环无连接服务器

 4.2 循环面向连接服务器

 4.3 并发无连接服务器

 4.4 并发面向连接服务器

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值