Re: [問題] socket的server與client互相傳值

作者: qrtt1 (有些事,有時候。。。)   2016-06-19 23:23:36
※ 引述《angelina877 (牛牛)》之銘言:
: server端
: https://gist.github.com/javaangelina/ff67d4116cc2b0950eff8d12e202d705
: client端
: https://gist.github.com/javaangelina/1ceef4924846aa5172a61c12fe175a4e
: 我想做出來的效果是client在console端,
: system.in一些數字,
: 丟回給server進行一些邏輯判斷.
: server接收完client的資料後,
: 進行邏輯判斷從server丟回client,
: 但是很奇怪的是我已經建立連線了
: 在client的console輸入資訊後,
: 就沒有其他顯示結果了
: 檢查了之後也覺得邏輯上沒有錯
: 請高手指點囉,先感謝大家:)
======================================================================
Server 的實作是
======================================================================
try {
System.out.println("get port 3521");
serverSocket = new ServerSocket(3521);
System.out.println("waiting client....");
// 要接受他告白嗎!?
clientSocket = serverSocket.accept();
writerToclient = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
readerFormclient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String output = null;
// 好唄,先聊聊天看看!?。但要看到 \n 才理他
while ((output = readerFormclient.readLine()) != null) {
int i = 7;
int y = Integer.parseInt(output);
// 終於說上話了,他也喜歡比 7 大的數字嗎?
if (y > i) {
System.out.println(output + ">" + 7);
// 太棒惹,有想跟他說話的念頭了
writerToclient.write("Hello Client.");
(謎:可是對方在等有 \n 的回音耶)
(謎:可是對方在等有 \n 的回音耶)
(謎:可是對方在等有 \n 的回音耶)
writerToclient.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}
======================================================================
Client 的實作是
======================================================================
try {
// 終於要到 line id 能送訊息惹
socket = new Socket("localhost", 3521);
System.out.println("取得輸入管道");
// 死盯著 line,等你的回音
BufferedReader readerFormserver = null;
readerFormserver = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
String outputformServer = null;
// 已經準備好隨時可以回訊息了!
out = new PrintWriter(socket.getOutputStream(), true);
Scanner scanner = new Scanner(System.in);
// 為了高傲的自尊,我才不要先發第 1 個訊息捏
// 等你回我有一個 \n 的訊息才回你。
while ((outputformServer = readerFormserver.readLine()) != null) {
System.out.println(outputformServer);
// 收到訊息了,繼續等等 \n 的訊息
}
// 是時候回你話了(謎之音:有這一天嗎!?)
out.println(scanner.nextLine());
System.out.println("Client傳送了");
out.close();
socket.close();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
======================================================================
宅宅無法戀愛,因為都在等待,沒人踏出第一步啊。
沒有人送第 1 個訊息,雙方都在等第 1 個含 \n 的訊息
另外 Client 的思維不是凡人可想像,只顧著等,不出手的。
(塊逃啊~~~)
=============================================================
盛竹如:究竟是命運的安排還是情感的糾葛
劇情背後似乎隱藏著不為人知的秘密這又是怎麼一回兒事呢?
整個事件已經進入撲朔離迷的羅生門就讓我們繼續看下去.
=============================================================
忘了再講個小秘訣,
gist 上的檔案會依附檔名做 syntax highlight
你可以把檔案改成 .java 結尾,比較好閱讀
作者: lucky1lk (賭到沒錢的人)   2016-06-20 08:21:00
推一個 但沒比三小 噓一個 打平
作者: angelina877 (牛牛)   2016-06-20 09:18:00
簡潔易懂 原來是邏輯錯了謝謝
作者: pttnews (PTT新聞)   2016-06-20 14:00:00
原PO 好人

Links booklink

Contact Us: admin [ a t ] ucptt.com