C++,java信息,文件传输

java客户端

 1 package client;
 2
 3 import java.io.DataOutputStream;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.IOException;
 7 import java.net.InetSocketAddress;
 8 import java.net.Socket;
 9
10 /**
11  * 文件发送客户端主程序
12  * @author admin_Hzw
13  *
14  */
15 public class client {
16
17     /**
18      * 程序main方法
19      * @param args
20      * @throws IOException
21      */
22     public static void main(String[] args) throws IOException {
23         int length = 0;
24         double sumL = 0 ;
25         byte[] sendBytes = null;
26         Socket socket = null;
27         DataOutputStream dos = null;
28         FileInputStream fis = null;
29         boolean bool = false;
30         try {
31             File file = new File("F:\\img\\6.jpg"); //要传输的文件路径
32             long l = file.length();
33             socket = new Socket();
34             socket.connect(new InetSocketAddress("127.0.0.1", 6000));
35             dos = new DataOutputStream(socket.getOutputStream());
36             fis = new FileInputStream(file);
37             sendBytes = new byte[1024];
38             while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {
39                 sumL += length;
40                 System.out.println("已传输:"+((sumL/l)*100)+"%");
41                 dos.write(sendBytes, 0, length);
42                 dos.flush();
43             }
44             //虽然数据类型不同,但JAVA会自动转换成相同数据类型后在做比较
45             if(sumL==l){
46                 bool = true;
47             }
48         }catch (Exception e) {
49             System.out.println("客户端文件传输异常");
50             bool = false;
51             e.printStackTrace();
52         } finally{
53             if (dos != null)
54                 dos.close();
55             if (fis != null)
56                 fis.close();
57             if (socket != null)
58                 socket.close();
59         }
60         System.out.println(bool?"成功":"失败");
61     }
62 }  

C++客户端

 1 #include <Winsock2.h>
 2 #include <cstdio>
 3 #include<iostream>
 4 using namespace std;
 5 #pragma comment(lib,"ws2_32.lib")
 6 void main()
 7 {
 8     WSADATA wsaData;
 9     SOCKET sockClient;//客户端Socket
10     SOCKADDR_IN addrServer;//服务端地址
11     WSAStartup(MAKEWORD(2, 2), &wsaData);    //一个socket的初始化函数
12     sockClient = socket(AF_INET, SOCK_STREAM, 0);//新建客户端socket,AF_INET使用IPv4进行通讯
13     //定义要连接的服务端地址
14     addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//目标IP(127.0.0.1是回送地址)
15     addrServer.sin_family = AF_INET;
16     addrServer.sin_port = htons(6000);//连接端口6000
17     //连接到服务端
18     connect(sockClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));
19     //发送数据
20     char message[1000] = "HelloSocket!";
21     char messagerecv[1000] = "";
22     send(sockClient, message, strlen(message) + 1, 0);
23     recv(sockClient, messagerecv, 1000, 0);
24     printf("%s\n", messagerecv);
25
26
27     //发送文件
28     string file_name = "F:\\img\\6.jpg";
29     FILE *fp = fopen(file_name.c_str(), "rb");
30     int num = 0;
31     while (!feof(fp))
32     {
33         num = fread(message, 1, 1000, fp);
34         send(sockClient, message, num, 0);
35     }
36
37
38     /*
39     //文件写操作
40     string file_name = "F:\\img\\7.jpg";
41     FILE *fp = fopen(file_name.c_str(), "wb");
42     int num = 0;
43     while (1)
44     {
45         num = recv(sockClient, message, 1000, 0);
46         if (num == 0)
47             break;
48         fwrite(message, 1, num, fp);
49     }
50     */
51
52
53
54     //关闭socket
55     fclose(fp);
56     closesocket(sockClient);
57     WSACleanup();
58 }

C++服务端

 1 #include <Winsock2.h>
 2 #include <cstdio>
 3 #include<iostream>
 4 using namespace std;
 5 #pragma comment(lib,"ws2_32.lib")
 6 void main()
 7 {
 8     WSADATA wsaData;
 9     SOCKET sockServer;
10     SOCKADDR_IN addrServer;
11     SOCKET sockClient;
12     SOCKADDR_IN addrClient;
13     WSAStartup(MAKEWORD(2, 2), &wsaData);
14     sockServer = socket(AF_INET, SOCK_STREAM, 0);
15     addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//INADDR_ANY表示任何IP
16     addrServer.sin_family = AF_INET;
17     addrServer.sin_port = htons(6000);//绑定端口6000
18     bind(sockServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));
19
20     //Listen监听端
21     listen(sockServer, 5);//5为等待连接数目
22     printf("服务器已启动:\n监听中...\n");
23     int len = sizeof(SOCKADDR);
24     char message[1000];//发送至客户端的字符串
25     char recvBuf[1000];//接受客户端返回的字符串
26
27     //会阻塞进程,直到有客户端连接上来为止
28     sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len);
29     //接收并打印客户端数据
30     //recv(sockClient, recvBuf, 1000, 0);
31     sprintf(message, "%s", "gua");
32     printf("%s\n", message);
33     //send(sockClient, message, 1000, 0);
34     printf("%s\n", recvBuf);
35
36     /*
37     //发送文件
38     string file_name = "F:\\img\\6.jpg";
39     FILE *fp = fopen(file_name.c_str(), "rb");
40     int num = 0;
41     while (!feof(fp))
42     {
43         num = fread(sendBuf, 1, 1000, fp);
44         send(sockClient, sendBuf, num, 0);
45     }
46     */
47
48     //文件写操作
49     string file_name = "F:\\img\\7.jpg";
50     FILE *fp = fopen(file_name.c_str(), "wb");
51     int num = 0;
52     while (1)
53     {
54         num = recv(sockClient, message, 1000, 0);
55         if (num == 0)
56             break;
57         fwrite(message, 1, num, fp);
58     }
59
60
61     fclose(fp);
62     //关闭socket
63     closesocket(sockClient);
64     WSACleanup();
65 }

时间: 2024-10-13 02:04:53

C++,java信息,文件传输的相关文章

java实现文件传输

在windows下装了个linux虚拟机,两者之间传输文件挺麻烦的.写了个简单的文件传输程序,来方便自己数据传送. server 端: import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import jav

java 接口 文件传输

调用接收端 @ApiOperation(value = "文件请求展示方法") @RequestMapping(value = "/showFile", method = RequestMethod.GET) public void showFile(HttpServletRequest request, HttpServletResponse response) throws Exception { //获取接口url String url = "htt

java对于文件传输时---编码格式的一些设置方法

- ----转 读文件: BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高效读取. 可以指定缓冲区的大小,或者可使用默认的大小.大多数情况下,默认值就足够大了. 通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求.因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader).例如, BufferedReader

java UDP聊天与文件传输

package rgy.com.UDP3; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.io.Fil

Java 简单TCP文件传输

服务端 package TCP; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; public class TCP_File_Serv

java socket通信-传输文件图片--传输图片

ClientTcpSend.java   客户端发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.InetSocketAddress; import java.net.Socket; public class ClientTcpSend { public static String clien

Java基于Socket文件传输示例(转)

最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解.在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加快传输的速度.废话少说,先来看服务器端的程序. 1.服务器端 package sterning; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream;

Java基于Socket文件传输示例

最近需要进行网络传输大文件,于是对基于socket的文件传输作了一个初步的了解.在一位网友提供的程序基础上,俺进行了一些加工,采用了缓冲输入/输出流来包装输出流,再采用数据输入/输出输出流进行包装,加快传输的速度.废话少说,先来看服务器端的程序. 1.服务器端 package localSocket; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStrea

java基于P2P的聊天和文件传输实例

用java的NIO技术编写的 1. 支持聊天功能 2. 拖拽文件能够实现文件传输功能.也能够是目录 3. 启动时能够选择server端或client端启动 4. 本人原创.学习NIO和java的网络通信一定会不错 5. 下载下来能够直接导致eclipse.然后执行 代码下载路径例如以下: http://download.csdn.net/detail/tqtihihc/8266793 截图: