TCP收发图片
来源:互联网 发布:如何看八字排盘 知乎 编辑:程序博客网 时间:2024/05/20 20:17
recvpic.c
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/socket.h>#include<string.h>#include<netinet/in.h>#include<memory.h>#include<arpa/inet.h>#define PORT 3214#define MAXLOG 100main(){int sockfd;struct sockaddr_in server,client;socklen_t len;int clientfd;int num;int MAXDATASIZE=32*1024;char buf[MAXDATASIZE];FILE *file; if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { perror("socket");exit(1);}bzero(&server,sizeof(server));server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr=htonl(INADDR_ANY);setsockopt(sockfd,SOL_SOCKET,SO_RCVBUF,(const char*)&MAXDATASIZE,sizeof(int));if(bind(sockfd,(struct sockaddr *)&server,sizeof(server))==-1){perror("bind");close(sockfd);exit(2);}if((listen(sockfd,MAXLOG))==-1){perror("listen");close(sockfd);exit(1);}len=sizeof(client);if((clientfd=accept(sockfd,(struct sockaddr *)&client,&len))==-1){perror("accept");close(sockfd);exit(1);}if((file=fopen("/home/orisun/recvpic.jpg","wb"))==NULL){perror("fopen");close(sockfd);exit(1);}while(1){num=recv(clientfd,buf,MAXDATASIZE,0);if(num<0){perror("recvfrom");close(sockfd);fclose(file);exit(3);}fwrite(buf,1,num,file);if(num<MAXDATASIZE)break;}close(sockfd);fclose(file);return 0;}
sendpic.c
#include<stdio.h>#include<memory.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in.h>#include<netdb.h>#include<sys/socket.h>#define PORT 3214int main(){int sockfd,num;int MAXDATASIZE=32*1024;char buf[MAXDATASIZE];struct hostent *he;struct sockaddr_in server,peer;FILE *file;if((he=gethostbyname("192.168.1.111"))==NULL){perror("getnostbyname");exit(2);}if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("socket");exit(3);}bzero(&server,sizeof(server));server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr=*((struct in_addr*)he->h_addr);setsockopt(sockfd,SOL_SOCKET,SO_SNDBUF,(const char*)&MAXDATASIZE,sizeof(int));if(connect(sockfd,(struct sockaddr*)&server,sizeof(struct sockaddr))==-1){perror("connect");close(sockfd);exit(1);}if((file=fopen("/home/orisun/Develop/Rental_Service/housepic/rental1.jpg","rb"))==NULL){perror("fopen");close(sockfd);exit(1);}bzero(buf,sizeof(buf));while(!feof(file)){num=fread(buf,1,MAXDATASIZE,file);if(num!=send(sockfd,buf,num,0)){perror("send");break;}}close(sockfd);fclose(file);return 0;}
- TCP收发图片
- TCP、UDP收发缓冲区
- 简单socket 文件收发(tcp)
- lwip tcp 收发分片处理
- tcp收发需要缓冲区,udp不需要缓冲区
- 基于TCP协议的数据收发实验
- tcp收发需要缓冲区,udp不需要缓冲区
- Android Tcp客户端收发数据Handler版本
- go 语言 net 扩展 模拟 tcp 收发
- TCP 接收连接及消息的收发
- FastCGI收发jpg图片的例子
- 20101013-华为GTM900C/EM310收发TCP数据AT命令流程
- 多进程实现客户端tcp收发包 linux
- Qt与Java实现Tcp网络通信,收发简单字符串。
- linux--------net- tcp----------客户端和服务器端 同步互相收发消息
- 从收发邮件这件事来理解TCP的三次握手
- 转帖:粘包、丢包及TCP信息收发
- Android TCP/IP收发16进制数组
- Ksoap调用WebService
- Java--产生随机数及随机字符的方法
- Android NDK--自己编写调用JNI
- underScore源码解析-----Collections
- Android中sdcard和adb命令的使用
- TCP收发图片
- 写入日志文件
- C语言里的字符串
- Android第四讲--用户界面
- Android第五讲--Menu
- Android第六讲--Intent
- Android第七课--Dialog
- Android第八课--数据共享
- 嵌入式Qtopia-2.2.0开发环境的搭建和使用