linux socket 发送图片

转载 2012年03月29日 11:32:51

linux socket发送图片

(2010-01-07 11:37:14)
 

#include   <stdio.h>

#include   <sys/socket.h>

#include   <stdlib.h>

#include   <sys/types.h>

#include   <string.h>

#include   <unistd.h>

#include   <netinet/in.h>

#include   <arpa/inet.h>

#include   <netdb.h>

#define   SER_PORT      1900

#define   MAX_LEN      256

 

int main(int argc,char **argv)

{

        int     sd,rn;

        struct sockaddr_in   client,server;

        char    buf[MAX_LEN];

        FILE    *fq;

        int     len,opt = 1;

 

        if( ( sd = socket(AF_INET,SOCK_STREAM,0)) == -1 )

        {

                perror("socket");

                exit(1);

        }

        bzero(&server,sizeof(server));

        server.sin_family = AF_INET;

        server.sin_port = htons(SER_PORT);

        server.sin_addr.s_addr = inet_addr("192.168.150.37");

         setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));

         if( connect(sd,(struct sockaddr *)&server,sizeof(server)) < 0 )

        {

                perror("Connect");

                close(sd);

                exit(1);

        }

        if( ( fq = fopen("1.jpg","rb") ) == NULL )

        {

                perror("File open");

                close(sd);

                exit(1);

        }

        bzero(buf,sizeof(buf));

        while( !feof(fq) )

        {

                len = fread(buf,1,MAX_LEN,fq);

                if( len != write(sd,buf,len) )

                {

                        perror("write");

                        break;

               }

        }

        close(sd);

        fclose(fq);

        return 0;

 

上面的代码是用来传输一个图片的,对于普通的文件一样适用(已测试通过),其中需要注意的,在发送和接受图片或文件时,特别需要注意while循环的控制,如果考虑不仔细会出现传输数据不全(可能是图片没传完或文件传输的不完整)或传输的数据超了等错误。

呵呵,基本就这些吧。

相关文章推荐

SenchaArchitect-2.0.0.000442

  • 2012年08月21日 09:07
  • 28.81MB
  • 下载

Linux命令行学习笔记

Linux学习笔记 命令行学习笔记(一) 进入中文虚拟终端: zhcon --utf8 常用命令: ls 显示 ls -a 显示全部 ls -al ...
  • charlv
  • charlv
  • 2011年09月20日 17:34
  • 509

定时提醒器-免费软件网

  • 2013年09月03日 19:50
  • 6.52MB
  • 下载

CParallelPort

  • 2011年11月22日 22:44
  • 1.58MB
  • 下载

C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变

原文地址:http://01258.blog.51cto.com/2229941/565420 在设计可供用户调整大小的窗体时,如何实现该窗体上的控件也应能正确地随窗体的改变而自动调整大小并且能...

Google C++ 风格指南 - 中文版

  • 2013年10月23日 21:40
  • 192KB
  • 下载

OpenGL学习四——帧缓存

1、缓存介绍    以统一的方式对每个像素的数据进行存储的空间被称为缓存,OpenGL中有四种缓存——颜色缓存、深度缓存、模板缓存以及累积缓存。    颜色缓存存储了颜色索引或RGB颜色数据,...

Google C++ 风格指南 - 中文版

  • 2010年10月18日 10:12
  • 687KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: linux socket 发送图片
举报原因:
原因补充:

(最多只允许输入30个字)