- 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通信)
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通信)
java客户端!
- 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();
- }
- }
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++服务器端
- // *******************************************************************
- // server.cpp : Defines the entry point for the console application.
- // *******************************************************************
- #include <winsock2.h>
- #include <stdio.h>
- #pragma comment(lib, "Ws2_32.lib")
-
- #define PORT_SERVER 2000
- #define NUM_CLIENTS 10
- #define SIZE 1024*8
-
- int b2i(char b[]) {
- int value = 0;
- for (int i = 0; i < 4; i++) {
- int shift = (4 - 1 - i) * 8;
- value += (b[i] & 0x000000FF) << shift;
- }
- return value;
- }
-
- int main(int argc, char* argv[])
- {
-
- FILE *fp;
- printf("Start up tcp server.\n");
- WSADATA wsaData;
- WORD sockVersion = MAKEWORD(2, 0);
- if (0 != WSAStartup(sockVersion, &wsaData))
- {
-
- printf("Failed to retrive socket version.\n");
- return 0;
- }
- SOCKET sock_sev;
- sock_sev = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (INVALID_SOCKET == sock_sev)
- {
- printf("Invalid socket.\n" );
- WSACleanup();
- return 0;
- }
- sockaddr_in addr_sev;
- addr_sev.sin_family = AF_INET;
- addr_sev.sin_port = htons(PORT_SERVER);
- addr_sev.sin_addr.s_addr = INADDR_ANY;
- if (SOCKET_ERROR == bind(sock_sev, (sockaddr *)&addr_sev, sizeof(addr_sev)))
- {
- printf("Failed to bind.\n");
- WSACleanup();
- return 0;
- }
- if (SOCKET_ERROR == listen(sock_sev, NUM_CLIENTS))
- {
- printf("Failed to listen.\n");
- WSACleanup();
- return 0;
- }
-
- SOCKET sock_client;
- sockaddr_in addr_client;
-
- fp=fopen("Resul11t.xml","wb");
-
- int nAddrLen = sizeof(addr_client);
-
- long int x=0;
- char tmp[SIZE];
- int length;
- char datalength[20];
- sock_client = accept(sock_sev, (sockaddr *)&addr_client, &nAddrLen);
- if (INVALID_SOCKET == sock_client)
- {
- printf("Failed to accept.\n");
- return 0;
- }
-
- recv(sock_client,datalength,21,0);
- length=b2i(datalength);
- printf("%d\n",length);
-
-
- while (recv(sock_client,tmp,SIZE,0)!=SOCKET_ERROR)
- {
-
- x=x+SIZE;
- if(x<length)
- {
- printf("%d ",sizeof(tmp));
- fwrite(tmp,1,SIZE,fp);
- }
- else
- {
- fwrite(tmp,1,length+SIZE-x,fp);
- printf("%d ",sizeof(tmp));
- fclose(fp);
- break;
- }
- send(sock_client,"OK",2,0);
- /*
- printf("%d ",sizeof(tmp));
- fwrite(tmp,1,sizeof(tmp),fp);
- memset(tmp, 0, sizeof(tmp));
- */
- }
- fclose(fp);
- closesocket(sock_client);
- return 0;
- }