Re: [問題] Socket傳送訊息
※ 引述《a39189 (Billups)》之銘言:
: 請教版上各位高手
: 我在寫TCPClient的時候發現了一個很奇怪的問題
: 再送訊息的時候 明明是同樣的程式碼(我將傳送訊息寫成一個method)
: 可是在不同的區域底下 一個Server端收的到訊息
: 另一個從外部呼叫的 Server卻收不到
: 這是什麼問題呢??? 有請版上各位幫我解惑了
: 我抓了這個蟲抓了快一天.....
: 程式碼如下
: public Boolean connectServer( String ServerIp )throws Exception{
: System.out.println("Connecting To Server... ");
: InetAddress IP = InetAddress.getByName(ServerIp);
: Client = new Socket ( IP , Port );
: if(!Client.isConnected()){
: assert Client.isConnected()==false;
: System.out.println("Connection failed");
: }
: //會成功送到Server端的片段
: try{
: sendToServer("Message");
: }
: catch(Exception e){
: }
: return Client.isConnected();
: }
: //Send message to TCP Server
: private void sendToServer(String Message){
: //Assertion for TCP connection
: if(!Client.isConnected()){
: assert Client.isConnected();
: System.out.println("Connection Failed");
: }else{
: System.out.println("Connection work");
: }
: try{
: DataOutputStream outToServer = new
: DataOutputStream(Client.getOutputStream());
: outToServer.writeBytes(Message+ "Client 1 \n");
: System.out.println("Sending '"+Message+"'");
: }catch(IOException e){
: }
: }
: .
: .
: .
: .
: .
: .
: public static void main(String args[])
: {
: try{
: TCPClient test = new TCPClient();
: test.connectServer("localhost")
: //這行Server端卻收不到
: test.inputMoves("Fail");
: }catch(Exception e){
: System.out.println(e);
: }
: }
這問題我之前寫Socket時也發生了...我只知道要怎麼解決,原理的話請強者說明...
我也很想知道原理...
以下是我的理解跟解決辦法
首先如果是
DataOutputStream out1 = new DataOutputStream(Client.getOutputStream());
DataOutputStream out2 = new DataOutputStream(Client.getOutputStream());
這樣 out2.write()似乎就會寫不出去
所以我是設一個 getOut()來拿到outStream 如:
User Jame = new User(TCPsocket);
DataOutputStream out1 = Jame.getOut();
DataOutputStream out2 = Jame.getOut();
這樣就可以寫了
好啦其實我看不懂你的問題,我只看到你說可以寫出去的那行,那你寫不出去的到底是
哪邊? main 那裡不就是測 你上面的地方嗎?
其實我只是想藉題發問我上面的問題而已XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.91.9.150
討論串 (同標題文章)