文章标题
来源:互联网 发布:加入淘宝客的要求 编辑:程序博客网 时间:2024/06/06 09:29
最近在学习TCP的知识,利用TCP协议在不同电脑间进行通信,同时结合之前学习的关于文件I/O方面的知识,解决文件通过网络进行复制的问题。
相比较于之前的程序是知识的一个综合,打开文件描述符,循环读写等,利用TCP中的send函数进行发送,另外一段进行解释并写。
#include "head.h"int main(int argc, const char *argv[]){ int sockfd,connfd; char buf[64]; ssize_t n; int fd2; //通过终端输入需要写入内容的文件名 if(argc < 2){ perror("argc"); exit(1); }//创建socket文件描述符 if((sockfd = socket(PF_INET,SOCK_STREAM,0)) == -1) { perror("socket"); exit(0); }//打开文件,没有文件创建并清空内容 if( -1 == (fd2 = open(argv[1],O_WRONLY |O_CREAT|O_TRUNC,0664))){ perror("open"); return -1; } //填充地址、协议内容 struct sockaddr_in ser_addr,cli_addr; memset(&ser_addr,0,sizeof(ser_addr)); ser_addr.sin_family = PF_INET; ser_addr.sin_port = htons(50001); ser_addr.sin_addr.s_addr = inet_addr("192.168.4.59");//绑定服务器端口号、IP地址 if(bind(sockfd,(struct sockaddr *)&ser_addr,sizeof(ser_addr)) == -1) { perror("bind"); exit(0); }//监听 listen(sockfd,5);//接收从终端发送的请求并创建connfd,新的网络文件描述符 int cli_len = sizeof(cli_addr); if((connfd = accept(sockfd,(struct sockaddr *)&cli_addr,&cli_len)) == -1) { perror("accept"); exit(1); } //接收从终端发送的内容,并写道打开并创建的文件中 memset(buf,0,sizeof(buf)); while(1) { if((n = recv(connfd,buf,sizeof(buf),0)) == -1) { perror("recv"); exit(1); } write(fd2,buf,n); printf("n = %d\n",n); printf("%s\n",buf); } return 0;}
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- Android Studio系列教程一--下载和安装
- C#程序设计实验考试
- 存储过程的简介以及简单实例
- 深入Javascript函数与闭包(执行环境、变量对象与作用域链)详解
- IOC--UI--LessonView
- 文章标题
- TexturePacker使用
- git查看历史与乱码解决
- 写一个通用的事件侦听器函数(兼容多浏览器)
- No sources that matches the given name (at 'layout_toLeftOf' with value '@id/
- iOS7新特性 ViewController转场切换(三) 自定义视图控制器容器的切换---非交互式
- javascript基础
- Intel MKL 在VS中的配置与安装笔记
- 写一个算法实现在一个整数数组中,找出第二大的那个数字。