Socket:java与C之间的文件传送<4>(JAVA与C通信)

  1. http://blog.csdn.net/mhapdream/article/details/8929253  Socket:java与C之间的文件传送<1>(C语言之间的通信)  
  2. http://blog.csdn.net/mhapdream/article/details/8929457  Socket:java与C之间的文件传送<2>(JAVA语言之间的通信)  
  3. http://blog.csdn.net/mhapdream/article/details/8929590  Socket:java与C之间的文件传送<3>(JAVA与C通信需要注意的地方)  
  4. http://blog.csdn.net/mhapdream/article/details/8929638  Socket:java与C之间的文件传送<4>(JAVA与C通信)  
http://blog.csdn.net/mhapdream/article/details/8929253  Socket:java与C之间的文件传送<1>(C语言之间的通信)
http://blog.csdn.net/mhapdream/article/details/8929457  Socket:java与C之间的文件传送<2>(JAVA语言之间的通信)
http://blog.csdn.net/mhapdream/article/details/8929590  Socket:java与C之间的文件传送<3>(JAVA与C通信需要注意的地方)
http://blog.csdn.net/mhapdream/article/details/8929638  Socket:java与C之间的文件传送<4>(JAVA与C通信)
  1. java客户端!  
java客户端!
  1. package client;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.OutputStream;  
  9. import java.net.*;  
  10. import java.util.*;  
  11.   
  12.   
  13. /**  
  14.  *   
  15.  * @author kingfish  
  16.  * @version 1.0  
  17.  */  
  18. public class Client {  
  19.       
  20.     public static byte[] i2b(int i) {  
  21.         return new byte[] { (byte) ((i >> 24) & 0xFF),  
  22.                 (byte) ((i >> 16) & 0xFF), (byte) ((i >> 8) & 0xFF),  
  23.                 (byte) (i & 0xFF) };  
  24.     }  
  25.       
  26.      public static void main(String[] args) throws Exception {  
  27.            
  28.       int size,length;  
  29.       Socket socket = new Socket("127.0.0.1",2000);  
  30.             OutputStream outputstream = socket.getOutputStream();  
  31.             InputStream inputStream = socket.getInputStream();  
  32.             File file = new File("D:\\TTPmusic\\姚贝娜 - 断桥离情.mp3");  
  33.             length = (int)file.length();  
  34.             outputstream.write(i2b(length));  
  35.             System.out.println(length);  
  36.             FileInputStream is = new FileInputStream("D:\\TTPmusic\\姚贝娜 - 断桥离情.mp3");  
  37.             byte[] buffer = new byte[4096 * 2];  
  38.             byte[] b = new byte[4];  
  39.             while ((size = is.read(buffer)) != -1) {  
  40.                 System.out.println(size+"  ");  
  41.                 outputstream.write(buffer,0,size);  
  42.                 while(inputStream.read(b)!= -1)  
  43.                 {  
  44.                     break;  
  45.                 }  
  46.                   
  47.             }  
  48.             outputstream.close();  
  49.             socket.close();  
  50.         }    
  51.     }  
package client;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.*;
import java.util.*;


/**
 * 
 * @author kingfish
 * @version 1.0
 */
public class Client {
	
	public static byte[] i2b(int i) {
		return new byte[] { (byte) ((i >> 24) & 0xFF),
				(byte) ((i >> 16) & 0xFF), (byte) ((i >> 8) & 0xFF),
				(byte) (i & 0xFF) };
	}
	
	 public static void main(String[] args) throws Exception {
		 
	  int size,length;
	  Socket socket = new Socket("127.0.0.1",2000);
	        OutputStream outputstream = socket.getOutputStream();
	        InputStream inputStream = socket.getInputStream();
	        File file = new File("D:\\TTPmusic\\姚贝娜 - 断桥离情.mp3");
	        length = (int)file.length();
	        outputstream.write(i2b(length));
	        System.out.println(length);
			FileInputStream is = new FileInputStream("D:\\TTPmusic\\姚贝娜 - 断桥离情.mp3");
			byte[] buffer = new byte[4096 * 2];
			byte[] b = new byte[4];
			while ((size = is.read(buffer)) != -1) {
				System.out.println(size+"  ");
				outputstream.write(buffer,0,size);
				while(inputStream.read(b)!= -1)
				{
					break;
				}
				
			}
			outputstream.close();
			socket.close();
		}  
	}
C++服务器端
  1. // *******************************************************************  
  2. // server.cpp : Defines the entry point for the console application.  
  3. // *******************************************************************  
  4. #include <winsock2.h>  
  5. #include <stdio.h>  
  6. #pragma comment(lib, "Ws2_32.lib")  
  7.   
  8. #define PORT_SERVER 2000  
  9. #define NUM_CLIENTS 10  
  10. #define SIZE 1024*8  
  11.   
  12. int b2i(char b[]) {  
  13.         int value = 0;  
  14.         for (int i = 0; i < 4; i++) {  
  15.             int shift = (4 - 1 - i) * 8;  
  16.             value += (b[i] & 0x000000FF) << shift;  
  17.         }  
  18.         return value;  
  19.     }  
  20.   
  21. int main(int argc, char* argv[])  
  22. {  
  23.   
  24. FILE *fp;     
  25. printf("Start up tcp server.\n");  
  26. WSADATA wsaData;  
  27. WORD sockVersion = MAKEWORD(2, 0);  
  28. if (0 != WSAStartup(sockVersion, &wsaData))  
  29. {  
  30.   
  31.    printf("Failed to retrive socket version.\n");  
  32.    return 0;  
  33. }  
  34. SOCKET sock_sev;  
  35. sock_sev = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);  
  36. if (INVALID_SOCKET == sock_sev)  
  37. {  
  38.    printf("Invalid socket.\n" );  
  39.    WSACleanup();  
  40.    return 0;  
  41. }  
  42. sockaddr_in addr_sev;  
  43. addr_sev.sin_family = AF_INET;  
  44. addr_sev.sin_port = htons(PORT_SERVER);  
  45. addr_sev.sin_addr.s_addr = INADDR_ANY;  
  46. if (SOCKET_ERROR == bind(sock_sev, (sockaddr *)&addr_sev, sizeof(addr_sev)))  
  47. {  
  48.     printf("Failed to bind.\n");  
  49.    WSACleanup();  
  50.    return 0;  
  51. }  
  52. if (SOCKET_ERROR == listen(sock_sev, NUM_CLIENTS))  
  53. {  
  54.    printf("Failed to listen.\n");  
  55.    WSACleanup();  
  56.    return 0;  
  57. }  
  58.   
  59. SOCKET sock_client;  
  60. sockaddr_in addr_client;  
  61.   
  62. fp=fopen("Resul11t.xml","wb");  
  63.   
  64. int nAddrLen = sizeof(addr_client);  
  65.   
  66. long int x=0;  
  67. char tmp[SIZE];  
  68. int length;  
  69. char datalength[20];  
  70. sock_client = accept(sock_sev, (sockaddr *)&addr_client, &nAddrLen);  
  71.    if (INVALID_SOCKET == sock_client)  
  72.    {  
  73.     printf("Failed to accept.\n");  
  74.     return 0;  
  75.    }  
  76.   
  77.         recv(sock_client,datalength,21,0);  
  78.         length=b2i(datalength);  
  79.         printf("%d\n",length);  
  80.   
  81.   
  82.        while (recv(sock_client,tmp,SIZE,0)!=SOCKET_ERROR)  
  83.        {  
  84.   
  85.            x=x+SIZE;  
  86.        if(x<length)  
  87.        {  
  88.             printf("%d  ",sizeof(tmp));  
  89.             fwrite(tmp,1,SIZE,fp);  
  90.         }  
  91.        else  
  92.        {  
  93.             fwrite(tmp,1,length+SIZE-x,fp);  
  94.             printf("%d  ",sizeof(tmp));  
  95.             fclose(fp);  
  96.             break;  
  97.        }  
  98.        send(sock_client,"OK",2,0);  
  99.            /*  
  100.                 printf("%d  ",sizeof(tmp));  
  101.                 fwrite(tmp,1,sizeof(tmp),fp);  
  102.                 memset(tmp, 0, sizeof(tmp));  
  103.                 */  
  104.        }  
  105.        fclose(fp);  
  106.        closesocket(sock_client);  
  107. return 0;  
  108. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值