对应书籍
《tcp/ip网络编程》第一章 理解网络编程和套接字.
我的笔记都是对书籍中知识点的总结, 代码基本都可以在书中找到,我可能略做修改.
初识socket
网络编程又称套接字编程, 套接字我我们提供运输层的服务, 我暂时将其理解为一套接口, 之后再对我的笔记进行修正.
从编程开始
复杂的解释只会让初学者陷入迷茫之中, 不如先来看看简单的代码. 不需要完全弄懂, 看一看就好了.
首先分成两部分: 服务器部分和客户端部分, 这两端分别创建一个套接字, 两个应用可以通过套接字来传递信息. 具体如何传我们来看看代码.
服务器端基本步骤:
先来介绍一下关键的函数, 有个印象就好了, 后面还会详细介绍的.
//1. 创建套接字#include<sys/socket.h>int sock(int domain, int type, int protocal);//成功返回文件描述符, 失败返回-1
//2. 分配IP地址和端口号#include<sys/socket.h>int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);//成功返回0, 失败返回-1
//3. 转为可接收请求状态#include<sys/socket.h>int listen(int sockfd, int backlog);//成功返回0,失败返回-1
//4. 受理连接请求#include<sys/socket.h>int accept(int sockfd, struct sockaddr *myaddr, socklen_t *addrlen);
服务器代码 (代码比较占地方,这里直接给链接吧,是我自己的gitee仓库哟)
客户端基本步骤:
创建套接字 sock (和服务器端sock用法一致)
连接套接字connect
如何编译
书上讲的比较清楚, 我这里就不赘述了. 不过书上只测试了同一台主机之间是否能发送消息, 我尝试了在两台主机也能发送消息.
我有一台华为云服务器运行服务器端代码, 本地用Mac运行客户端代码. 中途出现了点问题, 客户端无法connect, 原因是没有开放9999端口.
总结
本章主要是动手实践了一下, 一个服务器向一个客户端发送一个字符串. 并没有理解的很深, 课后题目也难以解答. 之后看了后面的章节再来看看课后题.
课后问题:
