C++ 응용 프로그램에서 만든 기본 winsock 소켓을 java.net.Socket을 사용하여 서버에 연결하는 라이브러리에 전달해야합니다. 이 winsock appication은 이미 소켓 연결을 처리합니다. 어떻게 java.net.Socket의 소켓 디스크립터를 명시 적으로 설정할 수 있습니까?Java 소켓에 기본 winsock 소켓 전달
1
A
답변
1
유닉스에서 이와 같은 문제가 발생했습니다. 동일한 메커니즘이 WinSock에서 작동하는지 확실하지 않습니다.
우리의 경우 C 프로그램은 특수 하드웨어를 사용하여 소켓을 만듭니다. C 프로그램은 Java 프로그램이 소켓을 전달 함을 나타냅니다. 그런 다음 Java 프로그램은 소켓의 파일 설명자로부터 입출력 스트림을 구성하여 일반 소켓처럼 읽기/쓰기가 가능합니다.
자바 코드가 여기에있다,
Class<FileDescriptor> clazz = FileDescriptor.class;
Constructor<FileDescriptor> c;
try {
c = clazz.getDeclaredConstructor(new Class[] { Integer.TYPE });
} catch (SecurityException e) {
e.printStackTrace();
return;
} catch (NoSuchMethodException e) {
e.printStackTrace();
return;
}
c.setAccessible(true);
FileDescriptor fd;
try {
fd = c.newInstance(new Integer(socket));
} catch (IllegalArgumentException e) {
e.printStackTrace();
return;
} catch (InstantiationException e) {
e.printStackTrace();
return;
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
} catch (InvocationTargetException e) {
e.printStackTrace();
return;
}
FileOutputStream os = new FileOutputStream(fd);
FileInputStream is = new FileInputStream(fd);
+0
멋지다. Java 소켓을 제공하고 입/출력 스트림을 제공해야하므로 앞으로 한 걸음 더 앞으로 나아갈 필요가있다. – ApriOri
관련 문제
- 1. SO_LINGER 및 닫는 소켓 (WINSOCK)
- 2. 이전에 bind() 호출에 전달 된 소켓 정보를 얻는 방법은 무엇입니까?
- 3. C++ Winsock non-blocking/async UDP 소켓
- 4. 소켓 기본 이해
- 5. WinSock 클라이언트 포트 및 라우터 포트 전달
- 6. Java 소켓 : TCP 체크섬이 잘못되었습니다.
- 7. Java 소켓 OutputStream이 플러시되지 않습니다
- 8. 대기열의 Java 소켓 연결
- 9. java 보안 클라이언트 소켓 인증
- 10. Java : 소켓 바인딩을 지우는 방법
- 11. 소켓 프로그래밍 -Java - 많은 클라이언트 한 소켓 질문
- 12. Java MINA 노출 소켓
- 13. gprof를 소켓에 사용하기
- 14. C 네트워크 프로그래밍 - Winsock
- 15. Java 소켓 - 실시간 전송
- 16. Java 소켓 클래스가 연결 상태와 관련하여 거짓입니다.
- 17. Java 소켓 서버에 대한 Python 소켓 클라이언트
- 18. 플래시 소켓 정책 - 정책이 제공되지만 클라이언트가 소켓에 대한 연결을 중단합니다.
- 19. 소켓에 연속 쓰기 한 후 Perl 소켓 프로그래밍 문제
- 20. Java TCP 소켓 스니핑
- 21. Java 소켓 스레딩 문제
- 22. Java 소켓 동기화 동작
- 23. Java 서버 소켓 오류
- 24. WLAN을 통한 Java 소켓?
- 25. Java 소켓 지연
- 26. Java 소켓 및 인터넷
- 27. Java 소켓 질문
- 28. 경량 Java 소켓 라이브러리
- 29. 스레드가 실행되는 Java 소켓
- 30. Java : 소켓 또는 RMI?
당신은 무엇을해야합니까? –
이 원시 소켓은 특수한 하드웨어 드라이버에 묶여 있습니다. – ApriOri
C에서 래퍼 모듈을 만든 다음 JNI를 사용하여 액세스하는 것이 좋습니다. –