powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сокеты
9 сообщений из 9, страница 1 из 1
Сокеты
    #34487192
MaximGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прива. Извенясь за наезженую тему. но... Народ взял пример с этого форума. У меня есть вопрос как сделать так что бы процесс обменна сообщениями между клиентом и сервером не прекращался.
Если не закрываю сокет у меня клиент виснет.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
 import  java.io.ObjectInputStream;
 import  java.io.ObjectOutputStream;
 import  java.net.Socket;
 import  java.net.ServerSocket;

 public   class  Server {

     public   static   void  main(String[] args) {
         new  Server().start();
    }

     public   void  start() {
        ServerSocket ss =  null ;
         try  {
            ss =  new  ServerSocket( 65000 );
        }  catch  (Exception e) {
            e.printStackTrace();
            System.exit( 0 );
        }
         while  (true) {
             try  {
                 new  ServerTask(ss.accept()).start();
            }  catch  (Exception e) {
                e.printStackTrace();
                System.exit( 0 );
            }
        }
    }

     private   class  ServerTask  implements  Runnable {

         private  Socket s;
         private  Thread self;
		 private  String message;
		
         public  ServerTask(Socket s) {
             this .s = s;
            self =  new  Thread( this );
        }

         public   void  start() {
             this .self.start();
        }

         public   void  run() {
             try  {
                ObjectInputStream ois =  new  ObjectInputStream(s.getInputStream());
                ObjectOutputStream oos =  new  ObjectOutputStream(s.getOutputStream());
				
				message = (String)ois.readObject();
				System.out.println("Client->"+message);
				oos.writeObject(message);                
				
				oos.flush();
                s.close();
				System.out.println("Socket closed");
            }  catch  (Exception e) {
                e.printStackTrace();
                 if  (!s.isClosed()) {
                     try  {
                        s.close();
                    }  catch  (Exception ee) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
...
Рейтинг: 0 / 0
Сокеты
    #34487646
Amigo111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то как-то странно ты делаешь...потоки не закрываешь,а сокет закрываешь,да еще и в try, и в catch
Попробуй закрывать потоки и сокет в блоке finally
...
Рейтинг: 0 / 0
Сокеты
    #34493215
MaximGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amigo111Что-то как-то странно ты делаешь...потоки не закрываешь,а сокет закрываешь,да еще и в try, и в catch
Попробуй закрывать потоки и сокет в блоке finally

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 public   void  run(){
			 try {
				ObjectInputStream  in  =  new  ObjectInputStream( this .cs.getInputStream());
				ObjectOutputStream out =  new  ObjectOutputStream( this .cs.getOutputStream());				
				 try {				
					System.out.println("Point input");
					 while ( !((msg = ((String)in.readObject())).equals("exit")) ){ 				
						
						System.out.println("Client" + msg);
						out.writeObject(msg);						
						out.flush();
					}
					System.out.println("Point input close");
				} finally {
					out.close();
					in.close();
					 this .cs.close();
				}							
			} catch (Exception e){
				e.printStackTrace();
			}			
		}
...
Рейтинг: 0 / 0
Сокеты
    #34493226
MaximGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Amigo111Что-то как-то странно ты делаешь...потоки не закрываешь,а сокет закрываешь,да еще и в try, и в catch
Попробуй закрывать потоки и сокет в блоке finally
Как сделать что бы сервер постоянно принимал от клиента сообщения и не закрывал сокет???
...
Рейтинг: 0 / 0
Сокеты
    #34493351
MaximGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2205)
at java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:2495)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2505)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1272)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349)
at Server$ClientFlow.run(Server.java:63)
at java.lang.Thread.run(Thread.java:595)

Вылетает екскептион, закрывается сокет закрывается поток.
клиент:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 import  java.net.Socket;
 import  java.net.InetSocketAddress;
 import  java.io.*;


 public   class  Client {

     public   static   void  main(String[] args)  throws  Exception {
		BufferedReader br =  new  BufferedReader( new  InputStreamReader(System.in));
        Socket s =  new  Socket();
        s.connect( new  InetSocketAddress("localhost",  2004 ));
        ObjectOutputStream oos =  new  ObjectOutputStream(s.getOutputStream());
		String qw;
		qw = br.readLine();
        oos.writeObject(qw);
        oos.flush();
        ObjectInputStream ois =  new  ObjectInputStream(s.getInputStream());
        String obj = (String) ois.readObject();
        System.out.println("Server=" + obj);
    }
}

...
Рейтинг: 0 / 0
Сокеты
    #34493549
piston
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чо в цикле нельзя постоянно опрашивать сокет????? зачем его закрывать
...
Рейтинг: 0 / 0
Сокеты
    #34493755
MaximGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pistonа чо в цикле нельзя постоянно опрашивать сокет????? зачем его закрывать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 do {		
	System.out.println("Point input do");					
	msg = (String)in.readObject();
	System.out.println("Client" + msg);
	out.writeObject(msg);						
	out.flush();
					
} while ( !(msg.equals("exit")) );
я вот так делаю, но вылетает екскепт... надо скорее всего подругому, если не тудно пример кода
...
Рейтинг: 0 / 0
Сокеты
    #34494023
MaximGL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
народ help хоть ктонибудь я уже sun перелопатил, не пойму как сделать????
...
Рейтинг: 0 / 0
Сокеты
    #34494071
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MaximGL

Эх ты, лапоть! А циклы хто будет делать?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.net.Socket;
 import java.net.ServerSocket;

 public class Server {

     public static void main(String[] args) {
         new Server().start();
     }

     public void start() {
         ServerSocket ss = null;
         try {
             ss = new ServerSocket( 65000 );
         } catch (Exception e) {
             e.printStackTrace();
             System.exit( 0 );
         }
         while (true) {
             try {
                 new ServerTask(ss.accept()).start();
             } catch (Exception e) {
                 e.printStackTrace();
                 System.exit( 0 );
             }
         }
     }

     private class ServerTask implements Runnable {

         private Socket s;
         private Thread self;
         private String message;

         public ServerTask(Socket s) {
             this.s = s;
             self = new Thread(this);
         }

         public void start() {
             this.self.start();
         }

         public void run() {
             try {
                 ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
                 ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
                 while(true){
                    message = (String)ois.readObject();                    
                    System.out.println("Client->"+message);
                    if (message.equals("exit")) break;
                    oos.writeObject(message);
                    oos.flush();
                 }
                 s.close();
                 System.out.println("Socket closed");
             } catch (Exception e) {
                 e.printStackTrace();
                 if (!s.isClosed()) {
                     try {
                         s.close();
                     } catch (Exception ee) {
                         e.printStackTrace();
                     }
                 }
             }
         }
     }
 }



import java.net.Socket;
import java.net.InetSocketAddress;
import java.io.*;

public class Client {

    public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Socket s = new Socket();
        s.connect(new InetSocketAddress("localhost",  65000 ));
        ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
        ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
        String qw;
        while(true){
            qw = br.readLine();
            oos.writeObject(qw);
            //oos.flush();
            if (qw.equals("exit")) break;
            String obj = (String) ois.readObject();
            System.out.println("Server=" + obj);            
        }
        oos.close();
        ois.close();

    }
}


...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сокеты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]