Linux 下 Java和C 写的程序进行通信 出现问题
各位大神,我今天在写一个Linux下,C语言和Java语言写的程序,利用socket进行通信的问题。
具体是,不知道为什么,只要在C语言那边,有recv函数出现,BufferedReader.readLine()函数就会卡住,如果换成是InputStream.read()函数就不会卡住了。不知道为什么,求各路大神帮忙啊。对了,传送数据的时候,还会出现乱码的情况,不知道为什么,即使是英文的,也会多出一些符号,跪求各路大神帮忙啊。。。。
具体代码如下:
C语言的主要代码如下:
strncpy( databuffer,"abc",strlen("abc") );
           int senderr = send(client_fd,databuffer,strlen(databuffer),0);//发送数据
           if(senderr==-1)
                           {
                 perror("send出错");
                 exit(1);
                           }
           else
                            {
                  printf("发送成功\n");
                            }  
           //bzero(databuffer,100);
           int recverr = recv(client_fd,databuffer,strlen(databuffer),0);       
           printf("接受完毕\n");
           if( recverr<0 )
                          {
                 perror("rev出错");
                 exit(1);
                           }
          else
                         {
                 printf("接收到的数据是:%s\n");
                         }
           close(client_fd);
           close(sock_fd);
           return 0;
Java语言的主要代码如下:
Socket  socket = new Socket(InetAddress.getLocalHost(),10000);
System.out.println("开始接收数据");
BufferedReader sin = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     	        	     System.out.println("接收到的数据为: "+sin.readLine());
     	        	     readline = sin.readLine();
     	        	     System.out.println("接收到的数据为: "+readline.trim());
     	        	     readline = "jdk";
    	        	     PrintStream os = new PrintStream(socket.getOutputStream()); //发送数据到C  
     	        	     os.println(readline);
     	        	     os.flush();
     	        	     System.out.println("发送成功");
------解决方案--------------------
java就不是很了解了,是不是要设置下传输的字符格式啊?