TCPIP网络编程 --(一)理解网络编程和套接字

TCP/IP网络编程 -- (一)理解网络编程和套接字

C语言文件操作

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
const int BUF_SIZE = 100;

void error_handling(char *message) {
    fputs(message, stderr);
    fputc('n', stderr);
    exit(1);
}
int main() {
    int fd;
    char buf[BUF_SIZE];
    fd = open("data.txt", O_RDONLY);
    if (fd == -1)
        error_handling("open() error!");
    printf("file descriptor: %d \n", fd);

    if (read(fd, buf, sizeof buf) == -1)
        error_handling("read() error!");
    
    printf("file data: %s", buf);
    close(fd);
    return 0;
}
  1. 其中 fd 为文件描述符,open() 返回文件描述符,如果为 -1 为文件打开失败;用于简化描述文件,不用每次都带着路径,文件名等等来指定文件

  2. fd = open("data.txt", O_CREAT|O_WRONLY|O_TRUNC);

​ O_CREAT: 创建文件

​ O_WRONLT:只可写

​ O_TRUNC:表示若打开文件时文件已经存在,则情况原来的,从头开始写

套接字与文件

Linux世界里, socket 也被认为是文件的一种,因此在网络数据传输过程中自然可以使用文件 I/O 的相关函数

Windows 与 Linux不同,是要区分 socket 与文件的,因此在Windows 中需要调用特殊的数据传输相关函数

可以用以下方式创建 socket

fd1 = socket(PF_INET, SOCK_STREAM, 0);
fd2 = socket(PF_INET, SOCK_DGRAM, 0);

socket() 函数用于创建一个套接字。它有三个参数:domaintypeprotocol

  • domain 指定了套接字使用的协议族。例如,PF_INET 表示使用 IPv4 协议族。
  • type 指定了套接字的类型。例如,SOCK_STREAM 表示流式套接字,而 SOCK_DGRAM 表示数据报套接字。
  • protocol 指定了套接字使用的具体协议。通常设置为0,表示使用默认协议。

这个函数返回一个文件描述符,用于表示新创建的套接字。如果创建失败,则返回 -1。

posted @ 2023-03-13 22:00  hzy0227  阅读(32)  评论(0编辑  收藏  举报