Let's go inside

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

          用SWT寫了一個類QQ聊天程序

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

          給一個陌生人做的作業,

          要求如下:
          編寫一個TCP?Socket程序,采用圖形化的界面實現,在服務器可輸入客戶端的IP地址和端口號,程序根據該IP地址和端口號與客戶端建立連接,在服務器端輸入要發送的內容點擊發送按鈕,就可以發送到客戶端,客戶端只接收服務器端發送的消息。

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

          憑記憶總結一下期間碰到的問題,一個是如果button要處理一個可能會阻塞或耗時的事件,那個事件處理的需要放在一個新的Thread里邊。不然的話。界面沒法響應其它的操作。

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

          最后在進行Socket編程的時候要把防火墻關掉。否則會拋出JVM_bind之類等莫名其妙的錯誤

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

          因為如果發送的消息末尾沒有line.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()才算讀到行尾才會打出來?。可以做一個試驗。輸入a,點按鈕,client沒反應,再輸入b,點按鈕,client沒反應,再輸入c,?這次用Ctrl?+?Enter發送。這樣client一次打印出abc來。。呵呵?。!!明白了?!!!!!

          Feedback

          # re: 用SWT寫了一個類QQ聊天程序[未登錄]  回復  更多評論   

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

          # re: 用SWT寫了一個類QQ聊天程序  回復  更多評論   

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

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 武陟县| 彭水| 横山县| 三江| 留坝县| 宝应县| 汤阴县| 清新县| 札达县| 临洮县| 加查县| 阳西县| 沾益县| 罗定市| 信阳市| 淮阳县| 松阳县| 文安县| 康乐县| 福安市| 城步| 恩平市| 襄汾县| 南宁市| 鹿泉市| 布拖县| 和林格尔县| 屯留县| 仙桃市| 乌苏市| 霞浦县| 比如县| 藁城市| 佳木斯市| 通辽市| 清远市| 屯昌县| 昭通市| 天峨县| 宜昌市| 建阳市|