2013-02-21 31 views
8

Trong ứng dụng Android của tôi, tôi muốn đọc luồng âm thanh và phân tích siêu dữ liệu shoutcast của nó. Tôi đã sử dụng StreamProxy như trong dự án NPR: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java?r=e4984187f45c39a54ea6c88f71197762dbe10e72java.net.SocketException: sendto không thành công: EPIPE (Broken pipe) qua kết nối dữ liệu tới localhost

Vấn đề là nó không hoạt động qua kết nối dữ liệu. NPR cũng gặp vấn đề tương tự.

Để tổng hợp, proxy này đang chạy dưới dạng máy chủ web cục bộ, tạo giao diện giữa ứng dụng và luồng từ xa. Nó đang chạy trên localhost 127.0.0.1 với một cổng tùy chỉnh được tạo ra. Khi máy chủ đang đọc dữ liệu dòng, nó sao chép nó vào ứng dụng như bạn có thể đọc tại dòng 223 trong StreamProxy:

client.getOutputStream().write(buff, 0, readBytes); 

Tuy nhiên dòng sản xuất ngoại lệ này qua kết nối dữ liệu:

java.net.SocketException: sendto failed: EPIPE (Broken pipe) 

Tôi không phải là chuyên gia về ổ cắm và phát trực tuyến. Tôi không nhận được những gì làm cho một sự khác biệt giữa một wifi và kết nối dữ liệu trong trường hợp đó.

+0

Hi, thậm chí tôi đang sử dụng một kênh proxy để chơi trực tuyến. Nó đang ném lỗi này trên một số thiết bị. Bạn đã tìm thấy bất kỳ giải pháp cho việc này. – vijaykumarg

+0

@ romain-piel Bạn đã bao giờ tìm ra vấn đề ở đây chưa? Tôi gặp vấn đề tương tự nhưng không thể tìm được giải pháp. – Nick

+0

nope: -/đó là một cái rất lạ. Tôi hiện đang sử dụng kết nối song song với luồng.Không lý tưởng nhưng ít nhất nó làm việc trong mọi tình huống –

Trả lời

-1

Dưới đây là một vài giải pháp!

Trước tiên, hãy đảm bảo khách hàng của bạn có cùng phiên bản với máy chủ mà bạn đang cố gắng tham gia. Nếu bạn không có phiên bản tương tự, bạn có thể tải xuống MCNostalgia và sử dụng phiên bản này để hạ cấp khách hàng của mình.

Cập nhật Java

Nếu bạn không muốn có bất kỳ vấn đề không tương thích, sau đó tôi muốn khuyến khích các bạn cài đặt môi trường chạy Java mới nhất (jre 7.0_05). Trước khi bạn thực hiện, bạn nên gỡ cài đặt các phiên bản trước khác. Nếu hệ điều hành của bạn chạy trong 32bit thì hãy cài đặt phiên bản 32bit (x86). Nếu bạn có 64bit, hãy cài đặt cả hai bắt đầu bằng 64bit và sau đó 32bit theo thứ tự chính xác này.

Disable un-cần host mạng

HamachiVirtual Box có thể là một trong số họ. Chúng có thể làm chậm hoặc gây trở ngại cho kết nối của bạn. Truy cập bảng điều khiển mạng và nhấp vào "modify network cards" (hoặc nội dung tương tự). Nhấp chuột phải vào bất kỳ máy chủ nào bạn cần tắt và sau đó chỉ cần nhấp vào vô hiệu hóa.

Vô hiệu hóa tường lửa của bạn

Bạn có thể truy cập vào các thiết lập tường lửa trong bảng điều khiển và vô hiệu hóa nó ở đó. Nếu điều đó không hoạt động, bạn có thể thử tắt tường lửa của bộ định tuyến. Nếu những người không cố gắng vô hiệu hóa chống vi-rút của bạn (các tùy chọn này không được khuyến cáo vì tin tặc có thể dễ dàng xâm nhập vào máy tính của bạn).

này cũng làm việc cho:

> Internal exception: java.net.SocketException: Software caused 
> connection abort: socket write error 
+1

Đây là Android - không có tùy chọn cập nhật jre :( –

Các vấn đề liên quan