Chủ đề: em có thắc mắc về socket
-
24-12-2012, 04:09 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
em có thắc mắc về socket
public class server{
public server(){
try{
ServerSocket ss = new ServerSocket(9999);
Socket s;
while(true){
s = ss.accept();
new Thread(new process(s)).start();
s.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
=================================
public class process implements Runnable{
Socket a;
public process(Socket s){
a = s;
}
public void run(){
// do something
}
}
// đoạn code trên là về một server sử dụng đa tuyến phục vụ nhiều client cùng lúc
// vấn đề ở đây là khi s (của lớp server đóng lại) (s.close()) thì a (của lớp process) (a được gán = s) //cũng đóng theo, mặc dù lớp process chưa chạy xong
// mọi người có cách j giải quyết ko ợ?View more random threads:
- So sánh thứ tự ký tự alphabet
- Thắc mắc về Stack trong java
- Lỗi khóa chính khi insert trong java Swing
- [HELP]Lấy dữ liệu từ trang html
- Giúp đỡ nhập xuất ma trận
- Thay đổi thuộc tính của View khi focus
- [Help] Tạo Crystal Report trong Java
- Chuẩn hóa chuỗi!!! Help
- Giúp đỡ về game phiêu lưu
- Java and Flickr - Rắc rối với tính thừa kế giữa Lớp Chính và các lớp phụ
-
24-12-2012, 05:45 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tại sao lại close khi chưa giải quyết xong vậy [IMG]images/smilies/icon_question.gif[/IMG]
-
25-12-2012, 08:06 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi fly_boy_9x
-
25-12-2012, 03:58 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Wazi Armstrong
a đã có giá trị; b gán = a;
khi a đóng, thì b cũng tự động đóng theo (cái này do JVM làm) em ko can thiệp j hết ợ
-
25-12-2012, 04:20 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi fly_boy_9x
-
25-12-2012, 04:33 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Wazi Armstrong
-
25-12-2012, 04:46 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Em hiểu sai hoàn toàn kiến thức về Thread rồi. Thread start sẽ chạy một luồng mới, trong khi đó luồng chính (main Thread) vẫn tiếp tục. Vì thế nên process của em chưa kịp xử lí gì thì close mất rồi.
Thêm nữa là sau trước khi dừng server nên close serversocket lại
-
25-12-2012, 06:08 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Wazi Armstrong
-
11-01-2013, 04:05 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình nghĩ bạn nên đóng close() trong method run() để đảm bảo thực hiện xong công việc thì mới đóng socket ( cái mà ta đang dùng đảm nhiệm trao đổi thông tin trong luồng hiện tại). Để đa luồng thì bạn cần mở socket mới nếu có luồng mới cần thực hiện và tất nhiên lại chỉ đóng nó khi hoàn thành xong.
while(true){
Socket s =new Socket( ss.accept());
new Thread(new process(s)).start();
s.close();
}
và cuối hàm run() bạn đóng cái socket mà run() đang dùng lại.
Mình nghĩ là kiểu j bạn cũng cần mở các socket mới nếu như 1 tiến trình mới xuất hiện và chỉ close nó sau khi nó thực hiện xong.
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...