C++,java信息,文件传输
java客户端
package client; import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket; /**
* 文件发送客户端主程序
* @author admin_Hzw
*
*/
public class client { /**
* 程序main方法
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
int length = ;
double sumL = ;
byte[] sendBytes = null;
Socket socket = null;
DataOutputStream dos = null;
FileInputStream fis = null;
boolean bool = false;
try {
File file = new File("F:\\img\\6.jpg"); //要传输的文件路径
long l = file.length();
socket = new Socket();
socket.connect(new InetSocketAddress("127.0.0.1", ));
dos = new DataOutputStream(socket.getOutputStream());
fis = new FileInputStream(file);
sendBytes = new byte[];
while ((length = fis.read(sendBytes, , sendBytes.length)) > ) {
sumL += length;
System.out.println("已传输:"+((sumL/l)*)+"%");
dos.write(sendBytes, , length);
dos.flush();
}
//虽然数据类型不同,但JAVA会自动转换成相同数据类型后在做比较
if(sumL==l){
bool = true;
}
}catch (Exception e) {
System.out.println("客户端文件传输异常");
bool = false;
e.printStackTrace();
} finally{
if (dos != null)
dos.close();
if (fis != null)
fis.close();
if (socket != null)
socket.close();
}
System.out.println(bool?"成功":"失败");
}
}
C++客户端
#include <Winsock2.h>
#include <cstdio>
#include<iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main()
{
WSADATA wsaData;
SOCKET sockClient;//客户端Socket
SOCKADDR_IN addrServer;//服务端地址
WSAStartup(MAKEWORD(, ), &wsaData); //一个socket的初始化函数
sockClient = socket(AF_INET, SOCK_STREAM, );//新建客户端socket,AF_INET使用IPv4进行通讯
//定义要连接的服务端地址
addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//目标IP(127.0.0.1是回送地址)
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons();//连接端口6000
//连接到服务端
connect(sockClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));
//发送数据
char message[] = "HelloSocket!";
char messagerecv[] = "";
send(sockClient, message, strlen(message) + , );
recv(sockClient, messagerecv, , );
printf("%s\n", messagerecv); //发送文件
string file_name = "F:\\img\\6.jpg";
FILE *fp = fopen(file_name.c_str(), "rb");
int num = ;
while (!feof(fp))
{
num = fread(message, , , fp);
send(sockClient, message, num, );
} /*
//文件写操作
string file_name = "F:\\img\\7.jpg";
FILE *fp = fopen(file_name.c_str(), "wb");
int num = 0;
while (1)
{
num = recv(sockClient, message, 1000, 0);
if (num == 0)
break;
fwrite(message, 1, num, fp);
}
*/ //关闭socket
fclose(fp);
closesocket(sockClient);
WSACleanup();
}
C++服务端
#include <Winsock2.h>
#include <cstdio>
#include<iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main()
{
WSADATA wsaData;
SOCKET sockServer;
SOCKADDR_IN addrServer;
SOCKET sockClient;
SOCKADDR_IN addrClient;
WSAStartup(MAKEWORD(, ), &wsaData);
sockServer = socket(AF_INET, SOCK_STREAM, );
addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//INADDR_ANY表示任何IP
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons();//绑定端口6000
bind(sockServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR)); //Listen监听端
listen(sockServer, );//5为等待连接数目
printf("服务器已启动:\n监听中...\n");
int len = sizeof(SOCKADDR);
char message[];//发送至客户端的字符串
char recvBuf[];//接受客户端返回的字符串 //会阻塞进程,直到有客户端连接上来为止
sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len);
//接收并打印客户端数据
//recv(sockClient, recvBuf, 1000, 0);
sprintf(message, "%s", "gua");
printf("%s\n", message);
//send(sockClient, message, 1000, 0);
printf("%s\n", recvBuf); /*
//发送文件
string file_name = "F:\\img\\6.jpg";
FILE *fp = fopen(file_name.c_str(), "rb");
int num = 0;
while (!feof(fp))
{
num = fread(sendBuf, 1, 1000, fp);
send(sockClient, sendBuf, num, 0);
}
*/ //文件写操作
string file_name = "F:\\img\\7.jpg";
FILE *fp = fopen(file_name.c_str(), "wb");
int num = ;
while ()
{
num = recv(sockClient, message, , );
if (num == )
break;
fwrite(message, , num, fp);
} fclose(fp);
//关闭socket
closesocket(sockClient);
WSACleanup();
}
C++,java信息,文件传输的更多相关文章
- Java简单文件传输 socket简单文件传输示例
服务器端代码: import java.io.*; import java.net.*; /** * Created with IntelliJ IDEA. * User: HYY * Date: 1 ...
- java实现文件传输
在windows下装了个linux虚拟机,两者之间传输文件挺麻烦的.写了个简单的文件传输程序,来方便自己数据传送. server 端: import java.io.BufferedReader;im ...
- Java Tcp文件传输---转载
/** 客户端 1.服务端点 2.读取客户端已有的文件数据 3.通过socket输出流发给服务端 4.读取服务端反馈信息 5.关闭 **/ import java.io.*; import java. ...
- java 接口 文件传输
调用接收端 @ApiOperation(value = "文件请求展示方法") @RequestMapping(value = "/showFile", met ...
- java对于文件传输时---编码格式的一些设置方法
- ----转 读文件: BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高效读取. 可以指定缓冲区的大小,或者可使用默认的大小.大多数情况下,默认值就足够 ...
- 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)
目录[-] 一.TCP/IP协议 二.TCP与UDP 三.Socket是什么 四.Java中的Socket 五.基本的Client/Server程序 六.多客户端连接服务器 七.信息共享 八.文件传输 ...
- 循序渐进Socket网络编程(多客户端、信息共享、文件传输)
循序渐进Socket网络编程(多客户端.信息共享.文件传输) 前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据.故把Socket的基础知识总结梳理一遍. 1 ...
- java实现两台电脑间TCP协议文件传输
记录下之前所做的客户端向服务端发送文件的小项目,总结下学习到的一些方法与思路. 注:本文参考自<黑马程序员>视频. 首先明确需求,在同一局域网下的机器人A想给喜欢了很久的机器人B发送情书, ...
- Java 简单TCP文件传输
服务端 package TCP; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputSt ...
随机推荐
- C/C++返回内部静态成员的陷阱(转)
在我们用C/C++开发的过程中,总是有一个问题会给我们带来苦恼.这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困扰和很多开发人员.如果你的内存是在函数内栈上分配 ...
- jdbc问题:Access denied for user ''@'localhost''是因为没输入账户和密码
Access denied for user ''@'localhost' to database 'bjpowernode'
- 虚拟机下安装Centos7并配置Apache+PHP+Mysql+phpmyadmin+wordpress
一.安装Apache yum install httpd 安装成功后,Apache操作命令: systemctl start httpd //启动apache systemctl stop httpd ...
- 去掉A标签的点击选中边框
非IE a:focus { outline:none; }
- 有道词典Linux版下载安装
http://cidian.youdao.com/index-linux.html Ubuntu http://codown.youdao.com/cidian/linux/youdao-dict_1 ...
- Ansible playbook 部署filebeat
- hosts: all tasks: - name: Copy Package copy: src=/usr/local/filebeat--linux-x86_64.tar.gz dest=/us ...
- thinkphp5分页传参
$name = input('get.searchKey/s'); if($name != ""){ $this->assign('searchKey', $name); $ ...
- mysql的下载与安装
官网 下载 https://www.mysql.com/ 依次点击:downloads>community>mysql community server,如图所示 image.png ...
- Spring Boot配置文件放在jar外部
Spring Boot程序默认从application.properties或者application.yaml读取配置,如何将配置信息外置,方便配置呢? 查询官网,可以得到下面的几种方案: 通过命令 ...
- net core体系-web应用程序-4net core2.0大白话带你入门-11asp.net core 2.0 cookie的使用
asp.net core 2.0 cookie的使用 本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过. cookie的使用方法和之前的相比也有所 ...