重温网络编程(一)
前言 近日突然发现自己忘记了网络编程,重新拾起一下。 几个概念性东西: 很多时候介绍socket连接通讯的时候,往往是上面这张图。 右边是服务器,左边是客户端。 服务器: 第一步: socket(), 是创建一个socket。这个过程我们使用的语言和操作系统?其实就是和我们调用http请求登录是一样的,会返回一个标识符,操作系统是服务端,我们的程序是客户端。 操作系统内部就做某些东西,可能是创建一个socket,然后返回一个标识码,通过这个标识码,后面调用其他的api,通过传输这个标识符,就可以操作改socket。 第二步:bind(),去绑定ip和port,因为只有通过ip和port才能找到服务器。 第三步: listen(),去监听,这个时候才开始了action。判断是否是这个地址,和端口,就可以创建连接。 第四步:accept(),比如有一个连接来了,操作系统首先帮助我们缓存起来,因为它不知道把这个连接的信息调用给谁,通过accept建立与操作系统的持久性连接,然后操作系统才能源源不断的把连接信息给到我们。 第五步或者第六步:如果没有accept我们的程序是无法收到消息的,但是我们的操作系统肯定是收到了的,毕竟建立了连接。而我们发现接受信息的时候,我们调用的是 recv(hSocket,message,sizeof(message)-1,0),我们和操作系统沟通接收信息