Java与C++的Socket通信有关问题,java socket只接收到4个字符

Java与C++的Socket通信问题,java socket只接收到4个字符
本帖最后由 kenlaiisme 于 2014-07-21 16:31:14 编辑
环境:
服务器:  CentOS6.5 + Java 1.7
客户端: MacOS + xCode 语言: C++

本人初学编程,按照网上的一些教程,写了一个服务器端程序,通过Socket接收客户端发来的字符串,但是接收到的字符串只有前4个字符,另,我又试着用Java写了一个客户端,给服务器端发送字符串,又能正常收发。这个问题困扰了我很久,不断在网上查方法,都没有结果。
服务器端部份代码:

        private Socket soc=null;
        private BufferedReader read=null;   //
        private PrintStream print =null;    //
        private String funcName=null;
        private String sqlStr=null;
        ........
        
        String message = null;
        while(!(message = read.readLine()).equals("exit"))
         {
               System.out.println("Recv: " + message);  //打印收到的字符串
               processString(message);  //把接收到的字符串进行分割,以#为分割符,#前的字符串给funcName,#后的字符串给sqlStr
               if(((funcName!=null)||(funcName!="")) && ((sqlStr!=null)||(sqlStr!="")))
                {
                       System.out.println("FuncName = " + funcName);
                       System.out.println("SQL = " + sqlStr);   //因为只接收到客户端发来的字符串的前4个字符,程序的下一句无法执行

                       switch(funcName)  //按照funcName的值,选择进行数据库操作
                         {
                                case "select" :
                                {
                                       print.println(selectMysql(sqlStr) + '\0'); 
                                       break;
                                 }
                                case "update":
                                {
                                        print.println(Boolean.toString(updateMysql(sqlStr)) + '\0');
                                        break;
                                }
                                case "check":
                                {
                                       print.println(Boolean.toString(checkMysql(sqlStr)) + '\0');
                                       break;