当前位置:  技术问答>java相关

如何在JNI和C动态库之间传递SOCKET类型的值

    来源: 互联网  发布时间:2015-09-17

    本文导语:  我这里呢有一个C写成的动态库,里面有有几个函数分别为SOCKET通讯的建立,设置数据等等, 我现在要在JNI中调用其中有一个C函数为 SOCKET SocketConnect(char *pserver,*port) {SOCKET sockfd;   .........   return SOCKET; } 还有一个...

我这里呢有一个C写成的动态库,里面有有几个函数分别为SOCKET通讯的建立,设置数据等等,
我现在要在JNI中调用其中有一个C函数为
SOCKET SocketConnect(char *pserver,*port)
{SOCKET sockfd;
  .........
  return SOCKET;
}
还有一个为:
int SockSendMesgSOCKET sockfd,char *buf)
{
 ......
}

JNI给我的函数名分别为:
JNIEXPORT jobject JNICALL Java_mytest_java8583_SocketConnect
  (JNIEnv *, jclass, jstring, jint);

JNIEXPORT jint JNICALL Java_mytest_java8583_SockSendMesg
  (JNIEnv *, jclass, jobject, jstring);

我现在对两者如何连接清楚但是就是其中SOCKET值的调用和转换不是很清楚。
敬请各位大侠帮忙谢了。。。)
小弟这里先多谢了啊。。

|
看了你对JNI还不是很了解

(1)C语言的SORCKET类型java是无法识别的,所以返回给java是没有用的;
其他类型比如char*也一样
(2)能够被java通过JNI调用的C语言动态库函数的函数名是要有一定的命名规则的,即你应该将C语言的动态库中SocketConnect()和SockSendMesg()改为
JNIEXPORT jobject JNICALL Java_mytest_java8583_SocketConnect
  (JNIEnv *, jclass, jstring, jint);

JNIEXPORT jint JNICALL Java_mytest_java8583_SockSendMesg
  (JNIEnv *, jclass, jobject, jstring);
然后在java代码中分别以SocketConnect()和SockSendMesg()调用。

建议你仔细先看看jdk文档中JNI的部分,然后找一些这方面的源代码仔细读一下

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JNI 访问String类型成员变量
  • 编译JNI.h报大量错
  • JNI的问题
  • JNI++
  • 关于JNI的中文问题(急急急急急)
  • jni 问题 急急急 分数不够可以再加
  • jni的方法,用java调用c的代码,遇到的问题!
  • javah -jni myclass???在线...
  • 请问如何用jni类来调用一个非java写的外部exe?谢谢!
  • 难道没有人可以告我如何在applet中使用jni方法吗?
  • 听同事说JNI很烂! 很容易出错! 是真的吗? 来着有分!
  • jni的一个小问题--路径问题?
  • 请问JNI是个什么东西?
  • jni难吗?谁有这方面的资料?
  • 操作系统 iis7站长之家
  • 100分求java +VC6.0使用JNI的最简单例子
  • solaris 上编译JNI库的问题
  • JNI 助手类 NativeCall
  • JNI代码生成器 JNIGen
  • JNI编程工具 Janet
  • LevelDB JNI


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3