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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!