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就不是很了解了,是不是要设置下传输的字符格式啊?