C/C++网络编程,从socket到epoll
网络编程重要性

基于Linux平台
学习方法

socket概念

把socket理解为插座,电流(数据)在电路(通道)中在不同的电脑上流动
分类

基于TCP:流socket,有序、可靠
基于UDP:数据报socket,高效,不可靠(QQ、微信语音聊天)
socket通信流程

客户/服务端模式
客户端运行需要一个参数(可以和视频的一样)

过程:服务端相当于你的电话,服务端启动之后处于待机,客户端启动之后就建立了通道,进行报文的收发
问题1:为什么我的客户端写的是127.0.0.2,服务端依然显示client(127.0.0.1)connected!

服务端程序
1、创建流式socket

2、指定用于通信的ip地址和端口

3、把socket设置成监听模式(服务端需要等待客户端的连接)

4、接受客户端的连接(通道建立起来了)

客户端
1、创建socket

2、向服务端发送请求

3、客户发送/接受数据

服务端准备buffer,接受客户端报文

接收到后,在buffer里放一个OK,再把ok发给客户端

使用自己局域网IP地址

需要用2个以上的虚拟机(网络通信)
132虚拟机运行服务器

客户端在134虚拟机运行

没有路由:原因:防火墙132服务器

防火墙的配置
客户服务端程序

注意事项

socket函数的参数

gdb设置参数
服务端
ahau@ahau-virtual-machine:~/socket$ gdb server
(gdb) set args 5005
(gdb) b 23
客户端
ahau@ahau-virtual-machine:~/socket$ gdb client
(gdb) set args 192.168.220.128 5005
(gdb) b 23(客户端和服务端一样停留在23行)
运行服务端

IP地址

一个服务器两个网卡

5005端口通信

listen函数设置监听模式

IP地址的重要性

客户端什么时候connect

