socket传输文件是怎么变成数据流并传输的

我刚学socket,怎样通过它传送一个文件或者图片之类的东西,有人说要将文件转换成数据流,到底怎么转换,而且转换成什么类型的,哪位高手知道,麻烦将各个函数的详细描述讲解一... 我刚学socket,怎样通过它传送一个文件或者图片之类的东西,有人说要将文件转换成数据流,到底怎么转换,而且转换成什么类型的,哪位高手知道,麻烦将各个函数的详细描述讲解一下,感激不尽!!!
所有文件都是可以这样读取的啊?我只读取过文本文件和二进制文件,这样都出来额数据是对的么?
展开
 我来答
杨楼村
推荐于2017-09-09 · 经典互联网教程,高考,软考,程序
杨楼村
采纳数:140 获赞数:411

向TA提问 私信TA
展开全部
主要是你通过socket api封装要发送的数据,内部会自动封装成数据流进行传输。
1,什么是Socket
网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。
但是,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。
2,Socket通讯的过程
Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client 端都可以通过Send,Write等方法与对方通信。
对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤:
  (1) 创建Socket;
  (2) 打开连接到Socket的输入/出流;
  (3) 按照一定的协议对Socket进行读/写操作;
  (4) 关闭Socket.(在实际应用中,并未使用到显示的close,虽然很多文章都推荐如此,不过在我的程序中,可能因为程序本身比较简单,要求不高,所以并未造成什么影响。)
3,创建Socket
创建Socket
java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。这是两个封装得非常好的类,使用很方便。其构造方法如下:
Socket(InetAddress address, int port);
Socket(InetAddress address, int port, boolean stream);
Socket(String host, int prot);
Socket(String host, int prot, boolean stream);
Socket(SocketImpl impl)
Socket(String host, int port, InetAddress localAddr, int localPort)
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
ServerSocket(int port);
ServerSocket(int port, int backlog);
ServerSocket(int port, int backlog, InetAddress bindAddr)

Socket client = new Socket("127.0.01.", 80);
ServerSocket server = new ServerSocket(80);

  在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出例外。
xiaohuh421
推荐于2017-09-26 · TA获得超过904个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:370万
展开全部
你可以先把文件的数据读取到一个char 类型的buf中,就可以了.接收到后再保存也可,直接转换也可.
简单举个例子:
FILE *pFile=fopen("a.bmp","rb");//可以是a.txt,a.exe,a.dat,"理论上说"
char buf[MAX_BUF_LEN]={0}; //什么文件都可以这样读取到一个buf中
fread(buf,1,MAX_BUF_LEN,pFile);
fclose(pFile);
send(buf,MAX_BUF_LEN);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式