JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區 » 網路程式設計  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Client端ip設成server的實體ip就是連不上!
k11051124





發文: 6
積分: 0
於 2012-05-17 03:30 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
小弟要做個很單純的 server端跟client端的檔案傳輸,然而只要在client端的ip不是設127.0.0.1就連不上。

我知道這類的文章、教學非常多,但經過無數次的google與爬文大家講的都是以 127.0.0.1為教學或192.168.的範例。
這我也知道,但是只要上網查自己的實體ip,用這ip去設就是連不上。(總是要給非區網的人當client端吧,不然寫幹嘛的)

我目前是一台電腦自己是server端,又是client端在測。
經爬文有人是說一台電腦若自己是server端又是client端的話,ip設對外的就會連不上。(例如我的ip:111.240.95.xx),但眾說紛雲啊...沒有一個相當專業的確定說法,總是"好像是"、"不確定耶"。
雖然我只有一台電腦,不過我也有用另一種方法測過,電腦一樣當server端(WIFI無線上網),然後client端寫成android手機版,手機用3G上網方式,結果還是連不上(這推理沒錯吧,server與client不同ip了)。可是喔若此時手機改也用WIFI上網就連上電腦了,我想也是,因為等於又吃同一條線路在區網裡,不過這邊ip要改為192.168.xx。

初步研判程式碼不可能有問題,因為ip只要用 127.0.0.1就一定連的上。
況且我的程式已經單純到不行了,跟本只有連線而已,什麼事都沒做。

我想我的問題這部份已經不只是程式問題了,牽扯到網路了。牽扯到網路就有更多的無限多的可能因素,電腦網路環境設定之類的。但是無論在防火牆的設定、網路設定、port設定或cmd的測試能試都試了,還是不行...

看遍各文章總是沒有看到 "Java Server端電腦的網路環境相關總設定與常見問題" 之類的詳細教學

以下為code,已刪除掉檔案傳輸的程式部份(傳檔怎麼寫不管,重點就是這樣就連不上了)
拋出的例外是 java.net.ConnectException: Connection refused: connect(中譯:連線被拒、拒絕連線)

========server端code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.net.*; 
 
public class Server {
    public static void main(String[] args) { 
        try { 
            int port = 7277;
            ServerSocket serverSkt = new ServerSocket(port); 
            while(true) { 
                System.out.println("等待連線中...");
                Socket clientSkt = serverSkt.accept();
                System.out.printf("嘗試與 %s 建立連線%n",clientSkt.getInetAddress().toString());  
                clientSkt.close(); 
                System.out.println("\n確定可連線!"); 
            } 
        }catch(Exception e) { 
            e.printStackTrace(); 
        } 
    }     
}

========client端code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.net.Socket;
 
public class Client {
    public static void main(String args[]) {
        try { 
            System.out.println("Ready Send....");
            String ip = "111.240.95.x"; 
            int port = 7277;
            Socket skt = new Socket(ip, port); 
            System.out.println("connect success....");
            skt.close();
        }catch(Exception e) { 
            e.printStackTrace(); 
        } 
    }
}

有興趣的可以將client端ip自己改成127.0.0.1會馬上出現"建立連線"、"確定可連線"。
但若將ip改成上列的實體ip就會連不上了。(server端只會出現"等待連線中",接著沒多久就拋例外了)
我想這麼簡單的code還連不上就是網路環境設定的問題了??還是說若改成實體ip code這樣寫會錯??
還請各位前輩指導。


k11051124 edited on 2012-05-17 06:03
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
12941 Client端ip設成server的實體ip就是連不上! k11051124 2203 2012-05-17 03:30
12639 Re:Client端ip設成server的實體ip就是連不上! jimmy14 102 2012-05-17 08:54
12639 Re:Client端ip設成server的實體ip就是連不上! jimwayne 697 2012-05-17 09:54
12672 Re:Client端ip設成server的實體ip就是連不上! k11051124 299 2012-05-17 12:08
10471 Re:Client端ip設成server的實體ip就是連不上! bernardvai 374 2012-05-17 15:27
10539 Re:Client端ip設成server的實體ip就是連不上! k11051124 269 2012-05-17 16:37
10516 Re:Client端ip設成server的實體ip就是連不上! k11051124 85 2012-05-19 01:16
2940 Re:Client端ip設成server的實體ip就是連不上! standxsnow 69 2018-04-13 06:38
» JWorld@TW »  Java SE 討論區 » 網路程式設計

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8