【网络编程】TCPIP_1_快速入门
前言
说明:
- demo 基于 Linux。
1. 快速入门
以下步骤简略了很多细节,但是通过下面的几个函数就能构建出简单的TCP/IP网络编程demo了。
原文:李柱明博客
1.1 服务端编程简要步骤
网络编程中和接受连接请求的套接字创建过程可整理如下:
- 第一步:调用 socket 函数创建套接字。
- 第二步:调用 bind 函数分配IP地址和端口号。
- 第三步:调用 listen 函数转换为可接受请求状态。
- 第四步:调用 accept 函数受理套接字请求。
- 第五步:调用 read、write 读写函数进行数据交互。
- 第六步:调用 close 函数关闭套接字。
1.2 客户端编程简要步骤
客户端请求连接简要步骤:
- 第一步:调用 socket 函数创建套接字。
- 第二步:调用 connect 函数向服务端发送连接请求。
- 第三步:调用 read、write 读写函数进行数据交互。
- 第四步:调用 close 函数关闭套接字。
1.3 参考
如 TCP 客户端和服务端:
部分参考函数及其头文件(基于linux):
// 第一步:调用 socket 函数创建套接字。
//成功时返回文件描述符,失败时返回-1
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
// 第二步:调用 bind 函数分配IP地址和端口号。
//成功时返回0,失败时返回-1
#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);
/* 补充 client 部分 */
//成功时返回0,失败时返回-1
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
// 第三步:调用 listen 函数转换为可接受请求状态。
//成功时返回0,失败时返回-1
#include <sys/socket.h>
int listen(int sockfd, int backlog);
// 第四步:调用 accept 函数受理套接字请求。
//成功时返回文件描述符,失败时返回-1
#include <sys/socket.h>
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);
// 第五步:调用读写函数进行数据交互。
/* 成功时返回接收的字节数(但遇到文件结尾则返回 0),失败时返回 -1
fd : 显示数据接收对象的文件描述符
buf : 要保存接收的数据的缓冲地址值。
nbytes : 要接收数据的最大字节数
*/
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t nbytes);
/* 成功时返回写入的字节数 ,失败时返回 -1
fd : 显示数据传输对象的文件描述符
buf : 保存要传输数据的缓冲值地址
nbytes : 要传输数据的字节数
*/
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t nbytes);
// 第六步:调用 close 函数关闭套接字。
/* 成功时返回 0 ,失败时返回 -1
fd : 需要关闭的文件或套接字的文件描述符
*/
#include <unistd.h>
int close(int fd);
参考:
- 《TCP/IP网络编程》
- TCP/IP TCP详细笔记
- github