服务器:
    public static void getListOfFiles(String path, DataOutputStream outToClient) throws IOException
    {
        // Directory path here
          //String path = "."; 
          String files;
        try 
        {
              File folder = new File(path);
              File[] listOfFiles = folder.listFiles(); 
              String sendOver = "";
              for (int i = 0; i < listOfFiles.length; i++) 
              {
                   files = listOfFiles[i].getAbsolutePath();
                   sendOver = sendOver + "!" + files;
              }
              outToClient.writeBytes(sendOver + "\n");
        } 
        catch (Exception e) 
        {
            outToClient.writeBytes("There was an error with the path, please try again. \n" );
        }
    }
    public static void getDate(DataOutputStream outToClient) throws IOException
    {
        outToClient.writeBytes(Calendar.getInstance().getTime().toString() + '\n');
    }
    public static void getUsers(DataOutputStream outToClient) throws IOException
    {
        outToClient.writeBytes("User logged in: "+ System.getProperty("user.name") + "\n");
    }
}
客户:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int main()
{
    int sock, bytes_recieved;
    char send_data[1024],recv_data[1024];
    struct hostent *host;
    struct sockaddr_in server_addr;
    bytes_recieved = 1024;
    host = gethostbyname("localhost");
    sock = socket(AF_INET, SOCK_STREAM,0);
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(3324);
    server_addr.sin_addr = *((struct in_addr *)host->h_addr);
    bzero(&(server_addr.sin_zero),8);
    connect(sock, (struct sockaddr *)&server_addr,sizeof(struct sockaddr));
    char *temp = '\n';
    while(1)
    {
        printf("Enter Command...\n");
        gets(send_data);
        strcat(send_data, "\n");
        send(sock,send_data,strlen(send_data), 0);
        if(send_data[0] == 'Q' && send_data[1] == 'U' && send_data[2] == 'I' && send_data[3] == 'T')
        {
            printf("Quiting...");
            break;
        }
        //printf("\nSend Data :");
        recv_data[bytes_recieved] = '\0';
        bytes_recieved = recv(sock,recv_data,1024,0);
        //fflush(stdin);
        printf("\nRecieved data = %s" , recv_data);
        recv_data[bytes_recieved] = '\0';
    }
}
本质上,服务器端正确接收所有内容(我已经调试过),但是客户端不能正确读取 -
以下是我在客户端的控制台中的一些示例:
test
Recieved data = Error wEnter Command...**<---- What The??**
Recieved data = ith command: TEST_c.dylibEnter Command... **<---- What The??**
Recieved data = Error with command: dylibEnter Command... **<---- What The??**
Recieved data = Error with command: Enter Command... **<---- What The??**
我正在回信
outToClient.writeBytes("Error with command: " + capitalizedSentence + "\n" );
当我得到上述。希望有人更精通C。