• 【网络编程】学习笔记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
  • 相关阅读:
    hdu 1296
    hdu 2101
    hdu 2100
    codeforces 3C
    codeforces 2A
    codeforces 1B
    codeforces 811B
    关于sws_scale() 段错误
    cf 1288 D. Minimax Problem (好题)(二分+二进制表状态+枚举)
    opencv4 鼠标事件 鼠标画线条
  • 原文地址:https://www.cnblogs.com/Anonytt/p/15528371.html
Copyright © 2020-2023  润新知