目的: 我先从Client发送一个文件名到Server,再将文件内容传过去。从而在Server创建一个以从Client发送文件名的文件。
问题:  1. 文件名发送过去了,会在Server上建一个文件,但是内容是空的
       2. 没有文件发送部分,文件成件被传送。
个人想法:
       1. 被传送的文字格式与Java读取方式不一致。
  还大哥们帮帮我啊。内部函数没有什么问题。
代码如下: 
        Server 端
// TcpServer.java by Greg 3/2004// usage : java tcpServer <port number>.
// default port is 1500.
// connection to be closed by client.
// this server handles only 1 connection.import java.net.*;
import java.io.*;public class TcpServer {  public static void main(String args[]) {    int port;
    ServerSocket server_socket;
    BufferedReader input;
    DataOutputStream outputStream;
    DataInputStream inputStream;
    String message;    try {
      port = Integer.parseInt(args[0]);
    }
    catch (Exception e) {
      System.out.println("port = 1500 (default)");
      port = 1500;
    }    try {
      server_socket = new ServerSocket(port);
      System.out.println("Server waiting for client on port " +
                         server_socket.getLocalPort());
      // server infinite loop
      while (true) {
        Socket socket = server_socket.accept();
        System.out.println("New connection accepted " +
                           socket.getInetAddress() +
                           ":" + socket.getPort());
      // get file name
      input = new BufferedReader(new InputStreamReade(socket.getInputStream()));
       message = input.readLine();
      //message = "test.txt"; 指向文件名
     
      // print received data
      try {
          byte[] b = new byte[1024];
          int bytes = 0;
          File file = new File("C:/" + message);
          if(file.exists())
            file.delete();

          outputStream = new DataOutputStream(new FileOutputStream(file));
          inputStream = new DataInputStream(socket.getInputStream());          while ((bytes=inputStream.read(b))!= -1) {
            outputStream.write(b, 0, bytes);
          }          outputStream.close();
          inputStream.close();
        }
        catch (IOException e) {
          System.out.println(e);
        }        // connection closed by client
        try {
          socket.close();
          System.out.println("Connection closed by client");
        }
        catch (IOException e) {
          System.out.println(e);
        }
      }
    }
    catch (IOException e) {
      System.out.println(e);
    }
  }
}  Client 端
// client.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "MySocket.h"
#include <iostream>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{
  CMySocket *mySocket = new CMySocket;
  mySocket->Create();
  mySocket->Connect("127.0.0.1", 1500);  int i = 0;  char buffer[1024];
DWORD dwBytesRead = 0;
  DWORD NumberOfBytesRead;
  HANDLE hFile; 
  while ( 2 ) {
    hFile = ::CreateFile( "D:\\test.txt",       // file to create 
                    GENERIC_READ,   // open for writing 
                    0,               // do not share 
                    NULL,            // default security 
                    OPEN_EXISTING,   // overwrite existing 
                    FILE_ATTRIBUTE_NORMAL,   // normal file 
                             
                             NULL );          // no attr. template 
     if ( hFile == INVALID_HANDLE_VALUE ) 
    printf("Could not open file (error %d)\n", GetLastError());
    mySocket->Send( "test.txt\r\n", sizeof(char) * strlen("test.txt") ); 
    while (1)  {
    ::ReadFile( hFile, buffer, sizeof(buffer), &NumberOfBytesRead, NULL );
    if( NumberOfBytesRead == 0 )
        break;
    mySocket->Send(buffer, NumberOfBytesRead);
    }
  }
  ::CloseHandle(hFile);
  //delete mySocket;
  return 0;
}