TCP之client.c和common.h
来源:互联网 发布:js实现加载的图片转动 编辑:程序博客网 时间:2024/05/18 03:35
</pre><p>client.c </p><pre class="cpp" name="code">#include "../Common/common.h" int main(int argc, char *argv[]) { int clientfd; if(argc!=2) { fprintf(stderr,"Usage:./fileclient <IP_Address>\n"); exit(1); } struct sockaddr_in clientaddr; bzero(&clientaddr,sizeof(clientaddr)); clientaddr.sin_family=AF_INET; clientaddr.sin_addr.s_addr=htons(INADDR_ANY); clientaddr.sin_port=htons(0); clientfd=socket(AF_INET,SOCK_STREAM,0); if(clientfd<0) { perror("socket"); exit(1); } if(bind(clientfd,(struct sockaddr*)&clientaddr,sizeof(clientaddr))<0) { perror("bind"); exit(1); } struct sockaddr_in svraddr; bzero(&svraddr,sizeof(svraddr)); //将字符串形式的IP地址转换成网络字节序 if(inet_aton(argv[1],&svraddr.sin_addr)==0) { perror("inet_aton"); exit(1); } svraddr.sin_family=AF_INET; svraddr.sin_port=htons(PORT); socklen_t svraddrlen=sizeof(svraddr); if(connect(clientfd,(struct sockaddr*)&svraddr,svraddrlen)<0) { perror("connect"); exit(1); } //recv file imformation char buff[BUFFSIZE]; char filename[FILE_NAME_MAX_SIZE]; int count; bzero(buff,BUFFSIZE); count=recv(clientfd,buff,BUFFSIZE,0); if(count<0) { perror("recv"); exit(1); } strncpy(filename,buff,strlen(buff)>FILE_NAME_MAX_SIZE?FILE_NAME_MAX_SIZE:strlen(buff)); printf("Preparing recv file : %s from %s \n",filename,argv[1]); //recv file FILE *fd=fopen(filename,"wb+"); if(NULL==fd) { perror("open"); exit(1); } bzero(buff,BUFFSIZE); int length=0; while(length=recv(clientfd,buff,BUFFSIZE,0)) { if(length<0) { perror("recv"); exit(1); } int writelen=fwrite(buff,sizeof(char),length,fd); if(writelen<length) { perror("write"); exit(1); } bzero(buff,BUFFSIZE); } printf("Receieved file:%s from %s finished!\n",filename,argv[1]); fclose(fd); close(clientfd); return 0; }
common.h
#ifndef __COMMON_H_#define __COMMON_H_#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 6000 #define LISTENQ 20 #define BUFFSIZE 4096 #define FILE_NAME_MAX_SIZE 512#endif
0 0
- TCP之client.c和common.h
- tcp client in c
- Client-Server C程序示例C (使用 Sockets 和 TCP)
- WINSOCK2 TCP client 和server
- tcp/ip 程序 (改进版) client.h
- google probuf源码分析之common.h
- common.h
- Simple TCP Server Client Socket C
- C#--TCP实例(实现了client)
- client.h
- Android TCP协议之Client模块
- 1Boost之TCP,Client and Server
- android下tcp之client测试
- Java知识整理(十)之SE.TCP通信(Server和Client源代码)
- 简单的TCP连接Server和Client
- 基于TCP的server和client编写。
- TCP client
- TCP Client
- 关于qt的问题构造函数的问题
- Android Studio 模拟器中文显示乱码解决方案
- shell的数值计算,小数计算
- mysql基准测试 -benchmarks
- openGL ES截屏
- TCP之client.c和common.h
- 手动编译安装LAMP架构,并且实现nagios图形化监控(一)
- Java学习之路0727(十一)(正则表达式、线程)
- IOS-动画Animation
- 黑马程序员---函数的相关知识
- HTML5表格的介绍与使用
- 黑马程序员——自学总结(七)图形用户界面GUI
- 噩梦 游戏结束 检测血量执行动画
- web地址的写法