我现在用java socket server与c写的client 通讯,java socket server需要调用native C写的发送和接收函数。该函数需要传入fd(socket套接字)参数,但我查了一下Socket得不到FileDescriptor,更得不到int fd,当然如果能得到FileDescriptor也可以通过reflect得到private int fd;但关键是得不到FileDescriptor,请大家帮忙,有什么办法吗?

解决方案 »

  1.   

    请问你得到那个FileDiscriptor想干什么?与C的client通讯是靠网络协议,跟fd有什么关系?
      

  2.   

    这个有点莫名其妙了
    既然用TCP通讯,就应该针对协议来写,为什么要用JAVA再去调用C API??
    建议LZ去翻一下TCP通讯的基础,TCP本身就是设计为软件无关性
      

  3.   

    请问你得到那个FileDiscriptor想干什么?与C的client通讯是靠网络协议,跟fd有什么关系?
    =>
    FileDiscriptor里有底层的socket句柄,与C的API兼容的值。这样就能调用C的API了。这个有点莫名其妙了 
    既然用TCP通讯,就应该针对协议来写,为什么要用JAVA再去调用C API?? 
    建议LZ去翻一下TCP通讯的基础,TCP本身就是设计为软件无关性=》
    因为用C写的通讯是个中间层,JAVA与之通讯就需要兼容它,类型于JAVA的接口,这是特定环境下产生的问题,跟TCP的设计不冲突。