Socket 网络编程实战:启动顺序、环境配置与通信验证
一、 程序的编译与命名规范
为了方便管理和区分角色,在网络编程中我们通常遵循以下命名规范:
- 服务器端源码:
server.c-> 编译输出 ->server(或s) - 客户端源码:
client.c-> 编译输出 ->client(或c)
编译命令示例
# 编译服务器gcc server.c -o server# 编译客户端gcc client.c -o client二、 启动顺序:为什么服务器必须先跑?
这是 TCP 编程中最基本的规则:Server First。
- 服务器(被动方):启动后调用
listen,进入“被动等待”状态。它就像一个营业的店铺,必须先开门(运行进程),顾客才能进来。 - 客户端(主动方):启动后调用
connect,向指定 IP 和端口发起连接请求。
如果客户端先启动会怎样?
由于目标端口没有进程在监听,操作系统会直接拒绝连接请求,客户端程序会报错并退出。