【网络编程】学习笔记--01 套接字与文件操作
1.1网络编程套接字
Server端:
网络编程中接受连接请求的套接字创建过程可整理如下:
第一步:调用socket函数创建套接字
第二步:调用bind函数分配IP地址和端口号
第三步:调用listen函数转为可接受请求状态
第四步:调用accept函数受理连接请求
sock函数:建立会话
#include<sys/socket.h> int socket(int domain,int type,int protocol)
|
|- domain 套接字中使用的协议族(Protocol Family)信息
|- type 套接字数据传输类型信息
|- protocol 计算机间通信中使用的协议信息
bind函数:分配IP和PORT
#include<sys/socket.h> int bind(int sockfd,struct sockaddr *myaddr,socklen_t addrlen)
listen函数:建立连接
#include<sys/socket.h> int listen(int socketfd,int backlog)
accep函数:接受连接
#include<sys/socket.h> int accept(int socketfd,struct sockaddr *addr,socklen_t *addrlen)
Client端:
client端套接字的创建过程比创建server端套接字容易:
第一步:调用socket函数和connect函数
第二步:与服务器端共同运行以收发字符串数据
connect端函数如下:
#include<sys/socket.h> int connect(int sockfd,struct sockaddr *serv_addr,socklen_t addrlen)
基于Linux的文件操作:
在《TCP/IC网络编程》p10中提到一个很形象的比喻“论文号相当于文件描述符,论文相当于文件或套接字”
打开文件操作:
#include<sys/type.h> #include<sys/stat.h> #include<fcntl.h> int open(const char *path,int flag) 其中path:文件名的字符串地址 flag: 文件打开模式信息 | |- O_CREAT 必要时创建文件 |- O_TRUNC 删除全部现有数据 |- O_APPEND 维持现有数据,保存到其后面 |- O_RDONLY 只读打开 |- O_WRONLY 只写打开 |- O_RDWR 读写打开
关闭文件操作:
#include<unistd.h> int close(int fd)
需要注意的是:此函数不仅可以关闭文件,也可关闭套接字,从而印证“Linux操作系统不区分文件与套接字”的特点。
将数据写入文件:
#include<unistd.h> ssize_t write(int fd,const void *buf,size_t nbytes) | |- fd 显示数据传输对象的文件描述符 |- buf 保存要传输数据的缓冲区地址值 |- nbytes 要传输数据的字节数
此函数中,size_t意为用typedef声明的unsigned_int类型,ssize_t意味用typedef声明的signed_int类型。
读取文件中的数据:
#include<unisted.h> ssize_t read(int fd,void *buf,size_t nbytes)
前ICPC算法竞赛退役选手|现摸鱼ing