JNA/JAVA的socket问题

circle19851127 2009-06-30 11:14:49
各位大侠好,我想请问一个JNA的SOCKET问题

问题源于java对DLL的调用.DLL是C++写的,我使用JNA技术
DLL中函数DUABind的返回值是SOCKET*类型,它是其他函数的输入参数,但是其他类型需要SOCKET.我用IntByReference变量得到了SOCKET*的值,但不知道如何得到相应的SOCKET值,其他函数不能调用了,

另外我在JAVA中直接用SOCKET("192.168.0.87",1521)创建SOCKET直接带入需要SOCKET类型的函数,报错说函数不支持这种类型,是不是JAVA和C++里的SOCKET还不一样呢?

请大家指点一下,非常感谢.
...全文
132 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
circle19851127 2009-07-02
  • 打赏
  • 举报
回复
已经试了几个函数了,嘻嘻,大部分没有问题,非常感谢各位的指导,有问题在发帖请教哈!

感谢各位!
云上飞翔 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 circle19851127 的回复:]
引用 4 楼 jiangnaisong 的回复:
答:先试试第一个,由IntByReference变量得到了SOCKET*的值,通过getValue()得到相应的SOCKET值



这个试过了,不行呢.
我想在C++下面把原来的dll再封装一遍,再弄个新的DLL,输入参数改成SOCKET,一了百了,顺便有几个结构体指针的指针的也给改了,您看行不?
[/Quote]
答:这样可以。
circle19851127 2009-07-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiangnaisong 的回复:]
答:先试试第一个,由IntByReference变量得到了SOCKET*的值,通过getValue()得到相应的SOCKET值
[/Quote]

这个试过了,不行呢.
我想在C++下面把原来的dll再封装一遍,再弄个新的DLL,输入参数改成SOCKET,一了百了,顺便有几个结构体指针的指针的也给改了,您看行不?
临远 2009-06-30
  • 打赏
  • 举报
回复
c++的类型,用jni可以直接传递给java的只有积累,你可以在jni.h这个头文件里看到哪些数据类型可以用,似乎没见过SOCKET这种类型的,应该需要自己再转换一下。
云上飞翔 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 circle19851127 的回复:]
啊......
[/Quote]
答:先试试第一个,由IntByReference变量得到了SOCKET*的值,通过getValue()得到相应的SOCKET值
circle19851127 2009-06-30
  • 打赏
  • 举报
回复
啊......
云上飞翔 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 circle19851127 的帖子:]
各位大侠好,我想请问一个JNA的SOCKET问题

问题源于java对DLL的调用.DLL是C++写的,我使用JNA技术
DLL中函数DUABind的返回值是SOCKET*类型,它是其他函数的输入参数,但是其他类型需要SOCKET.我用IntByReference变量得到了SOCKET*的值,但不知道如何得到相应的SOCKET值,其他函数不能调用了,

另外我在JAVA中直接用SOCKET("192.168.0.87",1521)创建SOCKET直接带入需要SOCKET类型的函数,报错说函数不支持这种类型,是不是JAVA和…
[/Quote]
答:若只是:“用IntByReference变量得到了SOCKET*的值,但不知道如何得到相应的SOCKET值,其他函数不能调用了, ”
则:由IntByReference变量(相当于:SOCKET*的值)得到int(相当于:得到相应的SOCKET值),可用:
IntByReference变量.getValue()
然后将这个int(相当于:得到相应的SOCKET值),传送给:其他函数的输入参数。
这个是简单的。
只是:如何将这个得到相应的SOCKET值,转变成JAVA中的网络通信用的那个SOCKET类的对象,还没有好的想法[很可能就是不可行的],即无法转换的。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧