linux java socket_Linux C和Java用Socket通信,有问题

各位大神,我今天在写一个Linux下,C语言和Java语言写的程序,利用socket进行通信的问题。具体是,不知道为什么,只要在C语言那边,有recv函数出现,BufferedReader.readLine()函数就...

各位大神,我今天在写一个Linux下,C语言和Java语言写的程序,利用socket进行通信的问题。

具体是,不知道为什么,只要在C语言那边,有recv函数出现,BufferedReader.readLine()函数就会卡住,如果换成是InputStream.read()函数就不会卡住了。但是却会乱码。不知道为什么,求各位大神帮忙啊。

具体代码如下:

C语言的主要代码如下:

strcpy(

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()));

InputStreamReader reader = new InputStreamReader(socket.getInputStream());

char a[] = new char[256];

reader.read(a);

System.out.println("接收到的数据为: "+a);

System.out.println("接收到的数据为: "+a.toString());

//readline = sin.readLine();

//System.out.println("接收到的数据为: "+readline.trim());

readline = "我了歌曲";

byte[] b = readline.getBytes();

PrintWriter os = new PrintWriter(socket.getOutputStream()); //发送数据到C

os.println(readline);

os.flush();

System.out.println("发送成功");

socket.close();

os.close();

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值