【网络编程】学习笔记--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)

 

posted @ 2021-11-09 13:01  Anonytt  阅读(175)  评论(0编辑  收藏  举报