[問題] Server端ServerSocket 的accept()

看板java作者 (逍遙盃-佛得)時間14年前 (2011/09/30 12:22), 編輯推噓7(704)
留言11則, 5人參與, 最新討論串1/2 (看更多)
大家好 我想讓server端能回應client端 但是server端ServerSocket的accept方法會當掉 不知道該怎麼解決... 我用本機開啟server與client時 client程式不會當掉, 換另一台電腦去呼叫server時, server和client都會當掉 檢查過port, 也試過關防毒軟體 client程式碼如下(我寫在actionPerformed裡) byte buff[]=new byte[1024]; try { txa.append("Connect to Server"); Socket s=new Socket("140.113.59.165",11000); txa.append("Connection construced"); InputStream in=s.getInputStream(); int n=in.read(buff); txa.append("received from server"); txa.append(new String(buff,0,n)); in.close(); s.close(); } catch(Exception ex) { txa.append(e+"happen"); } server程式碼如下(同樣寫在actionPerformed) try { ServerSocket svs=new ServerSocket(11000); txa.append("wait for client's request"); Socket s=svs.accept(); //這行出現開始會當掉 txa.append("Connecting"); txa.append("Sending"); OutputStream out=s.getOutputStream(); String str="GOGOGO"; out.write(str.getBytes()); out.close(); s.close(); txa.append("Completed"); } catch(Exception ex) { txa.append(e+"happen"); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.59.165

09/30 12:49, , 1F
有印出什麼東西嗎?
09/30 12:49, 1F
又要謝謝你~client是直接連不上, server會印出第一行 wait for client's request 然後就當掉 ※ 編輯: vity 來自: 140.113.59.165 (09/30 13:12) ※ 編輯: vity 來自: 140.113.59.165 (09/30 13:12)

09/30 13:39, , 2F
可能沒當掉,只是一直卡在accept那邊等連線進來而已... = =
09/30 13:39, 2F
但是連不進去...冏

09/30 13:56, , 3F
改用 nio 來寫就不會 block 了...
09/30 13:56, 3F
※ 編輯: vity 來自: 140.113.59.165 (09/30 14:15)

09/30 14:47, , 4F
你先確定一下實體網路的設定問題,說不定 IP 根本就.....
09/30 14:47, 4F

09/30 14:55, , 5F
嗯.... 換區網的IP試試看.....
09/30 14:55, 5F

09/30 16:36, , 6F
換127.0.0.1試試看也可以
09/30 16:36, 6F
本機也不行...真的不知道為什麼 ※ 編輯: vity 來自: 140.113.59.165 (09/30 19:54) 我用netstat -nao去檢查 發現我開的port 是出現在 協定 本機位址 外部位址 狀態 PID_# TCP [ : : ]: 11000 [ : : ]:0 Listening (是我javaw的process沒錯) 為何是開在這? 是這個的問題嗎? 開在140.113.59.165 或是127.0.0.1 例如[140.113.59.165:11000] 感覺比較對?...要怎麼改呢 ※ 編輯: vity 來自: 140.113.59.165 (09/30 20:27)

09/30 21:07, , 7F
沒遇過.... 我區網/本機/網際網路/android模擬器通通連很順
09/30 21:07, 7F

10/01 03:48, , 8F
有可能是 blocking
10/01 03:48, 8F
問題解決了, 回來說明一下解決過程 原本是用awt寫的, 改成用console後發現一切正常, 可傳資料 於是用console的server對awt的client =>不行 用console的client對 awt的server =>可以 推論:awt的client有問題 果然在將frame弄成物件時叫成別的class的 經修正可連線, 謝謝大家的幫忙, 最大的問題不是電腦 不是網路 是我啊@@ ※ 編輯: vity 來自: 140.113.59.165 (10/01 16:23)

10/01 17:02, , 9F
沒過用awt.... 這還真是神奇的狀況.....
10/01 17:02, 9F

10/01 20:29, , 10F
樓上會錯意了,這跟 AWT 無關。
10/01 20:29, 10F

10/01 21:37, , 11F
弄個 thread 就可以了吧?
10/01 21:37, 11F
文章代碼(AID): #1EXKGA-U (java)
文章代碼(AID): #1EXKGA-U (java)