sorcket java_如何在JNI和C动态库之间传递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的部分,然后找一些这方面的源代码仔细读一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值