Let's go inside

          this blog is deprecated as a result of laziness.
          posts - 59, comments - 2, trackbacks - 0, articles - 0

          用SWT寫了一個(gè)類QQ聊天程序

          Posted on 2007-01-07 21:19 Earth 閱讀(1121) 評(píng)論(2)  編輯  收藏 所屬分類: Eclipse

          給一個(gè)陌生人做的作業(yè),

          要求如下:
          編寫一個(gè)TCP?Socket程序,采用圖形化的界面實(shí)現(xiàn),在服務(wù)器可輸入客戶端的IP地址和端口號(hào),程序根據(jù)該IP地址和端口號(hào)與客戶端建立連接,在服務(wù)器端輸入要發(fā)送的內(nèi)容點(diǎn)擊發(fā)送按鈕,就可以發(fā)送到客戶端,客戶端只接收服務(wù)器端發(fā)送的消息。

          正好在學(xué)SWT,?就一邊學(xué)一邊寫了,可以到這里去下載源代碼http://www.eclipseworld.org/bbs/read.php?tid=10290

          憑記憶總結(jié)一下期間碰到的問(wèn)題,一個(gè)是如果button要處理一個(gè)可能會(huì)阻塞或耗時(shí)的事件,那個(gè)事件處理的需要放在一個(gè)新的Thread里邊。不然的話。界面沒法響應(yīng)其它的操作。

          另外如果要在新的線程里操作SWT中的元素比如文本框。必須像下面這樣處理。
          ?display.asyncExec(new?Runnable()?{
          ??public?void?run()?{
          ???listenButton.setEnabled(false);
          ??}
          ?});
          否則會(huì)拋出好像是什么invalid?access的異常。

          最后在進(jìn)行Socket編程的時(shí)候要把防火墻關(guān)掉。否則會(huì)拋出JVM_bind之類等莫名其妙的錯(cuò)誤

          哈哈,今天又發(fā)現(xiàn)了一個(gè)問(wèn)題。。就是改成keyReleased()?以后。。還是要按照那個(gè)回貼的人來(lái)做。String?text?=?sendText.getText().trim()?+?lineS;

          因?yàn)槿绻l(fā)送的消息末尾沒有l(wèi)ine.separator的話。。在客戶端

          ???????BufferedReader?in?=?new?BufferedReader(
          ?????????new?InputStreamReader(socket
          ???????????.getInputStream()));
          ???????while?(true)?{
          ????????String?str;
          ????????while?((str?=?in.readLine())?!=?null)?{
          ?????????append(lineS?+?str);
          ????????}
          ????????Thread.sleep(500);
          ???????}
          就收不到?。消息的末端必須要有斷行符!呵呵。這樣in.readLine()才算讀到行尾才會(huì)打出來(lái)???梢宰鲆粋€(gè)試驗(yàn)。輸入a,點(diǎn)按鈕,client沒反應(yīng),再輸入b,點(diǎn)按鈕,client沒反應(yīng),再輸入c,?這次用Ctrl?+?Enter發(fā)送。這樣client一次打印出abc來(lái)。。呵呵?。!!明白了?!!!!!

          Feedback

          # re: 用SWT寫了一個(gè)類QQ聊天程序[未登錄]  回復(fù)  更多評(píng)論   

          2012-12-17 16:20 by 啊啊
          socket.getInputStream()提示錯(cuò)誤了

          # re: 用SWT寫了一個(gè)類QQ聊天程序  回復(fù)  更多評(píng)論   

          2012-12-17 21:23 by Earth
          什么錯(cuò)誤啊。post your stackTrace

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 茶陵县| 汶川县| 郁南县| 济阳县| 日照市| 灵寿县| 大余县| 达拉特旗| 桐庐县| 桂林市| 涪陵区| 定襄县| 井冈山市| 高州市| 晋宁县| 碌曲县| 化德县| 湟源县| 临泽县| 尉氏县| 宝山区| 开化县| 龙井市| 南川市| 固镇县| 达拉特旗| 嘉峪关市| 郧西县| 武乡县| 和硕县| 奉化市| 广德县| 商河县| 天峻县| 灵宝市| 会泽县| 朔州市| 中阳县| 淳安县| 海盐县| 广东省|