socket传输文件c
❶ 要通过(socket)来传输文件这是什么意思
SOCKET用于在两个基于TCP/IP协议的应用程序之间相互通信。中文有的称为套接字,你可以理解为一个插座和插头,两者匹配才能进行数据通信。 SOCKET最早出现在UNIX系统中,是UNIX系统主要的信息传递方式。在WINDOWS系统中,SOCKET称为WINSOCK。
SOCKET有两个基本概念:客户方和服务方。当两个应用之间需要采用SOCKET通信时,首先需要在两个应用之间(可能位于同一台机器,也可能位于不同的机器)建立SOCKET连接,发起呼叫连接请求的一方为客户方,接受呼叫连接请求的一方成为服务方。客户方和服务方是相对的,同一个应用可以是客户方,也可以是服务方。
在客户方呼叫连接请求之前,它必须知道服务方在哪里。所以需要知道服务方所在机器的IP地址或机器名称,如果客户方和服务方事前有一个约定就好了,这个约定就是PORT(端口号)。也就是说,客户方可以通过服务方所在机器的IP地址或机器名称和端口号唯一的确定方式来呼叫服务方。在客户方呼叫之前,服务方必须处于侦听状态,侦听是否有客户要求建立连接。一旦接到连接请求,服务方可以根据情况建立或拒绝连接。连接方式有两种,同步方式(Blocking)和(noBlocking).
客户方发送的消息可以是文本,也可以是二进制信息流。当客户方的消息到达服务方端口时,会自动触发一个事件(event),服务方只要接管该事件,就可以接受来自客户方的消息了。
❷ socket传输文件是怎么变成数据流并传输的
你可以先把文抄件的数据读取到一个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);
❸ java socket多文件传输问题
参考思路:
1.先传文件名跟文件大小到 server。
2.开始传文件。
3.告诉server传完了。
4.客户端开始传下一个,重复123。
参考简单代码:
long fileLength;
int readLength;
long totalLength;
for (...)
{
// 读取文件名
// 读取文件长度保存到fileLength中
// 将totalLength置为0
while (1)
{
// 读取数据流,将实际读取的字节数保存在readLength中
totalLength += readLength;
if (totalLength >= fileLength) // 一个文件读取完成,break
// 这样就差不多了,不过这会把下一个文件的信息读到当前文件中来。
// 思路是fileLength - totalLength小于等于你设置的缓冲区长度时读取长度就是fileLength - totalLength
}
}