文件流方式
主页 上一层 获得本机IP 对方连接本机的哪个IP? 如何使用DNS 文件流方式 读取一行语句 不定长参数 以Daemon方式运行 端口重用 用户登录及权限设置

 

如何能以访问文件流(stream I/O)的方式进行网络数据传输?

以文件流方式访问socket,必须分为读写两个stream,无法通过一个stream同时完成读写功能。

可以使用以下程序完成操作:(设sockfd是已连接的连接描述符)

FILE *cin, *cout;

 

cin = fdopen(sockfd, "r");

setbuf(cin, (char *)0);

cout = fdopen(sockfd, "w");

setbuf(cout, (char *)0);

 

则可以通过fgets, fread, fscanf等函数对文件流cin进行读操作(从socket中读)。

可以通过fputs, fwrite, fprintf等函数对文件流cout进行写操作(写入socket)。

 

需要注意的是,最好在写操作之后加一句fflush(cout),使写入的数据尽快发送。

在断开socket连接前,需要先执行fclose(cin); fclose(cout); 再执行close(sockfd)