java读取文件socket_在Java中,如何从已经打开的C套接字的文件描述符中获取Socket或DatagramSocket?...

我有一个

Linux程序分为两部分.

一部分NAT穿越获取UDP套接字(UDP孔冲孔)或TCP插座(TCP孔冲孔).第一部分是以C语言编写的,以便于促进或增强NAT穿越过程的本机特性.第二部分实际上是使用第一部分中通过NAT穿越获得的连接套接字.

现在这里是问题.我想要第一部分获得套接字的部分独立于第二部分,即使用套接字来应用于特定目的的部分.例如,我希望第一部分可重用于各种不同的应用程序,这些应用程序都需要在对等体之间建立UDP和TCP连接.

现在,我希望第二部分(应用程序部分)用Java而不是C或C编写.我希望第二部分使用由负责NAT穿越的C代码获得的套接字连接.假设第一部分建立了连接,然后返回一个结构体:

// Represents a TCP or UDP connection that was obtained in part one.

struct ConnectionObtained {

int socket_file_descriptor;

int source_port;

int destination_port;

int source_address; // 4 byte ipv4 address

int destination_address;

int is_UDP; // 1 for UDP client socket,0 for TCP client socket

};

第一部分的C代码可以通过JNI(Java Native Interface)或通过进程间通信将第二部分的Java代码提供给第二部分的Java代码.

我希望Java代码使用该信息来构造一个声明类型为java.net.DatagramSocket或java.net.Socket的对象,然后在DatagramSocket或Socket可以预期的位置使用该对象.

作为起点,请考虑以下示例代码…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值