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;
}
-
其中 fd 为文件描述符,open() 返回文件描述符,如果为 -1 为文件打开失败;用于简化描述文件,不用每次都带着路径,文件名等等来指定文件
-
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()
函数用于创建一个套接字。它有三个参数:domain
,type
和 protocol
。
domain
指定了套接字使用的协议族。例如,PF_INET
表示使用 IPv4 协议族。type
指定了套接字的类型。例如,SOCK_STREAM
表示流式套接字,而SOCK_DGRAM
表示数据报套接字。protocol
指定了套接字使用的具体协议。通常设置为0,表示使用默认协议。
这个函数返回一个文件描述符,用于表示新创建的套接字。如果创建失败,则返回 -1。