Tôi cần một cái gì đó giống như chức năng C getservbyname() cho một ứng dụng Java. Tôi phải phân tích một tệp cấu hình có thể chứa số cổng hoặc tên dịch vụ và trong trường hợp sau, tôi cần phải chuyển đổi số này thành số cổng để chuyển sang thư viện. Tôi tìm thấy this bug và có một chút ngạc nhiên khi câu hỏi được hỏi vào năm 1997 (!) Và thậm chí không được xem xét để thực hiện trong 13 năm. Tôi không thực sự muốn làm công cụ phân tích nền tảng cụ thể cho bản thân mình - có cách nào khác không?Nhận số cổng cho tên dịch vụ?
Trả lời
Trong this question Tôi đã tìm thấy thư viện here có vẻ như làm hết sức mình để cung cấp chức năng nền tảng chéo.
Cảm ơn gợi ý .... Thật không may, đó là một thư viện được cấp phép LGPL khiến nó khó sử dụng trong dự án EPL của tôi. Và nó sử dụng Maven và kéo trong jruby và một phụ thuộc lạ (jaffl) mà dường như trang web chính thức http://kenai.com/projects/jaffl/ nói với tôi rằng dự án không tồn tại .. – vwegert
Hầu hết các tính năng mới được thêm vào Java đã có một trường hợp sử dụng đã được chứng minh là một thư viện Java mã nguồn mở trong một thời gian. ví dụ. thư viện đồng thời chỉ được thêm vào sau khi nó là thư viện độc lập trong 6 năm. Đóng cửa chỉ được thêm vào bởi vì hầu hết các ngôn ngữ động khác có nó bây giờ. (Và rất miễn cưỡng)
Tôi đồng ý rằng bạn sẽ nghĩ rằng chức năng này có sẵn trong Java ngoại trừ, tôi cũng sẽ vì vậy tôi nghĩ rằng rất ít người sử dụng nó.
Cách tôi nhìn thấy nó, cho phép Mạng TCP không có độ phân giải tên dịch vụ cho số cổng giống như cho phép truy cập hệ thống tập tin mà không quan tâm đến thư mục .... – vwegert
@vwegert - hầu hết mã đều đề cập đến các dịch vụ sử dụng dây cứng hoặc cổng * được cấu hình * chứ không phải tên cổng; ví dụ. một ngăn xếp máy khách Java http thường có các số cổng 80 và 433 mặc định được tích hợp vào mã. Có thể bạn sẽ tìm thấy điều này trong mã C/C++. –
@Bước C: ... và đối với các cổng dưới 1024 thì đó là tùy chọn hợp lệ để thực hiện. Trong trường hợp này (cổng máy chủ tin nhắn SAP), số cổng phụ thuộc vào một số tham số khác (số hệ thống). Thông thường, cổng được đặt làm sapms
Apache Tomcat cung cấp một số JNI ràng buộc cho rằng:
package so3645405;
import org.apache.tomcat.jni.Address;
import org.apache.tomcat.jni.Library;
import org.apache.tomcat.jni.Sockaddr;
import org.apache.tomcat.jni.Socket;
public final class Net {
private Net() {
}
public static int getServByName(final String serviceName) {
try {
Library.initialize("tcnative-1");
long sa = Address.info(Address.APR_ANYADDR, Socket.APR_INET, 0, 0,
Library.globalPool());
Sockaddr addr = new Sockaddr();
Address.getservbyname(sa, serviceName);
Address.fill(addr, sa);
return addr.port;
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public static void main(final String[] args) {
if (args.length > 0) {
System.out.println(Net.getServByName(args[0]));
} else {
System.out.println("Usage: prog <serviceName>");
}
}
}
Cách sử dụng:
java -Djava.library.path=./ -classpath tomcat-coyote.jar;tomcat-juli.jar;.
so3645405.Net https
Output:
443
Dependencies:
- Thời gian xây dựng: tomcat-coyote.jar
- Thời gian chạy: tomcat-coyote.jar, tomcat-july.jar, lib gốc tcnative-1.
Tested dưới win64
Cảm ơn gợi ý, nhưng đây không phải là một ứng dụng dựa trên Tomcat. – vwegert
- 1. Thêm dịch vụ vào dịch vụ chuyển tên dịch vụ
- 2. cổng tác vụ, cổng ngắt, cổng gọi
- 3. Không thể bắt đầu dịch vụ [tên dịch vụ] với số
- 4. Nhận tên máy tính trong dịch vụ Windows?
- 5. Monit lỗi tên dịch vụ
- 6. Nhận số cổng cao, ngẫu nhiên vẫn có sẵn
- 7. Cách chạy dịch vụ WCF trên một cổng cụ thể
- 8. Android: Bluetooth không nhận được số cổng
- 9. Quy ước đặt tên cho phương thức dịch vụ
- 10. nhận System.ServiceModel.AddressAccessDeniedException trên Vista cho dịch vụ WCF
- 11. Nhận bối cảnh trong Dịch vụ
- 12. Nhận/đăng lên dịch vụ web RESTful
- 13. Nhận tên cổng nối tiếp sai từ bluetoothdevice (C#)
- 14. Có Dịch vụ nhận tin nhắn SMS
- 15. Tôi làm cách nào để có được tên dịch vụ từ mã cho Dịch vụ đám mây Azure?
- 16. Dịch vụ .NET cho Linux Daemon
- 17. Sự khác nhau giữa điểm cuối, dịch vụ và cổng khi làm việc với dịch vụ web là gì?
- 18. nhận SharedPreferences từ một dịch vụ
- 19. Định tuyến dấu vết cho một số cổng nhất định
- 20. Cách nhận một khối ISP trên cổng 25 cho SMTP
- 21. Hosting dịch vụ WCF trong IIS 7 (WS) với ràng buộc net.tcp trên hai cổng tcp
- 22. thay đổi số cổng cho solr-4.3.1
- 23. Thông số startId dịch vụ Android
- 24. Cách chọn số cổng tĩnh cho ứng dụng tùy chỉnh?
- 25. NET START <SERVICE> - cách/địa điểm nhận tên dịch vụ?
- 26. Dịch vụ WCF và Dịch vụ Windows
- 27. Tuỳ chỉnh giấy chứng nhận của khách hàng và tên người dùng xác nhận trong dịch vụ WCF
- 28. Nhận tên của thông số
- 29. Nhận cổng ngẫu nhiên cho ổ cắm UDP
- 30. cổng mặc định cho SQL Server
Nice. Một cuộc bỏ phiếu bình chọn mà không có bất kỳ bình luận nào. Rất hữu ích ... – vwegert