1. 程式人生 > >沫憶心V1.0記錄(客戶端遇到的問題)

沫憶心V1.0記錄(客戶端遇到的問題)

                                 沫憶心V1.0記錄(客戶端遇到的問題)

     這個專案還有幾個功能現在還沒有實現,所以就實現的功能中,我遇到的現在還記得的一些問題小結一下(本來是計劃將出現的問題一一記錄下來的,不知道後面自己幹嘛去了,建了個Errors檔案裡面卻沒寫東西。以後一定要記住,犯過的錯就要從中學到東西)。現在還有幾個大問題沒有找到解決方法,還希望高人指點,讓我們多多學習啊!!!

       1.聊天

(1). 聊天登入介面連線的時候獲取了網路輸入輸出流,跳轉到主介面時,沒有把這些流傳過去,當主介面傳送聊天訊息時,我又重新建立了輸入輸出流。測試時,我這邊打印發送訊息成功了。小甘那邊收不到訊息。因為我客戶端是往管道

B傳送資料,而伺服器時從管道A中取資料,所以肯定取不到任何東西。

(2). 所有的訊息都是一個訊息物件,寫入字串(String str)的長度時,我使用的是str.length(),而不是str.getBytes().length();第一種方法,針對英文字元是沒有問題的,但遇到中文就慘了,結果她那邊收到的中文字元就總是缺少了後面的一部分。就這個問題我們都在很多地方犯過,所以在傳輸資料時,不是出現這個問題就是那個有問題。這看起來是小問題,但卻有舉足輕重的影響。

(3).開始測試聊天是沒有問題的,後來不知道什麼時候發現聊天時,使用中文就會有問題,窗體介面錯位了。這個問題硬是沒看懂。到現在也還沒有解決。我們以為是重繪的原因,但實際在程式中,每次聊天都不需要重新整理介面的。而且奇怪的是,我們把窗體放大後再還原,多試幾次之後就正常了。這是為什麼?這個真的很糾結啊。。。。求哪位高人指點啊!!!

        2.網路五子棋

(1). 在五子棋上,我遇到了一個大問題,第一個就是在當被邀請的對手接受邀請後,兩個客戶端要都接受伺服器傳送來的棋盤圖片。接收到的圖片是BufferedImag格式,然後一直無法顯示在JPaneL上,用g.drawImage()為什麼不行,BufferedImage不是Image的子類嗎?將BufferedImage轉換成Image也不行。試過用JTabel,也不頂用,記得做遠端控制的時候這個方法是行得通的,現在不知道又是哪裡的問題了。可能是我其它哪個地方的問題,只是現在還沒發現而已。就這個問題我是停下了三天,沒有前進一步,一直在網上看別人的解釋,試過很多,都不頂用。最後實現想不出來了,我們才選了一條捷徑,就是不通過伺服器來發送棋盤的圖片了,而是把圖片放在在客戶端,當需要的時候,直接去取。對於這個專案,我們是這樣做了,但這個問題始終還是讓人很不服氣啊。

(2)第二個就是雙緩衝的問題,雖然也糾結了幾天,不過到現在都沒有解決掉。所以我真的是不得不懷疑自己的學習能力了,網上說要重寫updata()方法,先得到緩衝影象,再得到緩衝的畫筆,再繪製緩衝影象,我按照方法試了,因為如果我只是參照他們的思路而沒能解決,我還可以解釋是自己沒看懂,可就算我是把別人的程式碼copy過來,只是改下圖片,加上窗體就行不通了。這確實讓我很鬱悶啊!所以這還是個很大的問題。因為每當下完一顆棋子的時候,對手的棋盤上重繪的很糾結,不只是閃屏這麼簡單,它是先顯示背景顏色,然後再出現部分。真的太難看了。必須要最小化後,才正常。

(3)第三個就是,後面下棋子時,我又犯了幾個錯,傳棋子座標時,我多傳了一個byte標記位,導致伺服器解析出了差錯,另一個客戶端不能接收到對手的棋子。所有說,定好的協議就一定要按照協議來,否則就對不上來,沒法通訊了。

(4)後來又發現,一個問題,所有下過的棋子,在對方棋盤上顯示的位置橫縱座標位置總是相反的。也是因為我這邊在沒處理好。我用一個二維陣列chess[i][j]來表示棋子的標記,但我把i當做橫座標了,j當做縱座標來傳參。而實際上應該是j來表示橫座標的值,i來表示縱座標的值。

         3.網路畫板

        總的來說,網路畫板中出現的問題算是最少的了。沒有五子棋那麼糾結。

              (1)首先最主要的是協議的問題,因為最開始定的不夠完善,後來想到時再臨時加的,而我們是各自在自己原來的那份協議上加的,有的地方並沒有對應起來,比如說,我們兩個的sender reciver 的順序就不同,導致後面很多地方出現空指標。因為資料在傳輸的時候目標物件就傳錯了。所以在控制檯看到列印的資訊出現了這種情況,自己傳送的邀請,自己又收到了。導致出現了空指標問題。

               (2)在畫三角形時,發現傳送端的三角形與接收到的形狀不同。因為在傳送端,最開始處理的是第三個點是隨機出現的,然後將三個座標值傳給接收方,它接到後,又是按照這種方法畫的。意思就是說,接收方是接收到了三個座標值,但它只是用到了其中兩個,第三個就丟掉了。所以三角形只有一條邊是相同的,形狀就變了。

                  (3)第三個就是圖形重繪的問題了。其實這個錯誤在這次的專案中不是第一次犯。我們也想不通,構造窗體時,JFrame建立物件與直接使用this 到底有什麼區別!建立物件後,paint()方法就執行不了,而使用this時才可以。這是為啥??而我的習慣是建立窗體物件,最開始在進入主介面時,就要在pain()裡新增圖片,總是不能顯示圖片。

      總的來說,問題還是很多,有的也不怎麼記得了。不過最基本的就是協議的問題了。哪個地方不按照協議來,就一定得拋錨,有時候一個小問題就搞得很糾結。最傷不起的就是幾個還沒有解決的大問題了。

相關推薦

V1.0記錄(客戶遇到的問題)

                                 沫憶心V1.0記錄(客戶端遇到的問題)      這個專案還有幾個功能現在還沒有實現,所以就實現的功能中,我遇到的現在還記得的一些問題小結一下(本來是計劃將出現的問題一一記錄下來的,不知道後面自己幹嘛去了,建了

nginx反向代理後web服務器記錄客戶ip地址

spa gin nginx反向代理 lan form https 記錄 客戶端訪問 use nginx在做反向代理的時候,後端的nginx web服務器log中記錄的地址都是反向代理服務器的地址,無法查看客戶端訪問的真實ip。 在反向代理服務器的nginx.conf配置文件

Swift3.0 — CocoaAsyncSocket客戶例子

本文參考了http://blog.csdn.net/taoerit/article/details/51324889這篇博文,這裡對它進行了更新,使用了最新的xCode8和Swift3。在這裡首先要感謝下原文作者,這篇博文幫了我的大忙,我學習過之後也在這裡做一下記錄。

oracle和sqlserver記錄客戶ip、使用者名稱、sql

1.oracle--建立LOGON_TABLEcreate table LOGON_TABLE asselect sysdate logon_time,sys_context('USERENV','SESSION_USER') username,sys_context('US

在v$session表中記錄客戶IP

我們在查詢v$session表時,只能看到客戶端的機器名,而無法看到客戶機的IP地址。要想檢視IP地址可以建立一個數據庫級別的觸發器,在成功使用者登陸資料庫後將客戶的IP地址寫入v$session的client_info欄位中。 按如下方法建立這個觸發器(trigger):

Java NIO學習筆記(四) 使用JDK 1.7 NIO2.0 實現客戶與伺服器的通訊

JDK1.7 提供了全新的非同步NIO模式。稱為:NIO2.0或AIO。該模式引入了新的非同步通道的概念,並提供了非同步檔案通道和非同步套接字通道的實現。非同步通道提供兩種方式獲取獲取操作結果。分別是: 通過java.util.concurrent

Wb開發基礎-Http1.0協議-客戶與伺服器的互動

    Web開發的學習已經有一段時間了,但是對於Web開發來講,最基礎的來講還要屬Http協議,因為它是Web瀏覽器和伺服器之間進行一問一答互動過程必須遵守的規則。     當然,基本步驟大家都瞭解

Kafka讀取__consumer_offsets和Kafka 0.11客戶管理工具AdminClient

本文絕大部分內容參考自:http://www.cnblogs.com/huxi2b/p/6061110.html和http://www.cnblogs.com/huxi2b/p/7183219.html 一、Kafka讀取__consumer_offsets 注意:該實驗

spring security OAuth2.0客戶Client的實現

ner hub context uestc tap tde val pos ise 項目代碼:https://github.com/hankuikuide/microservice-spring-security-oauth2 網上多數的項目客戶端都是采用純js寫,或用p

使用zabbix3.0.4的ICMP Ping模版實現對客戶網絡狀態的監控

host -1 ping 修改 cat onf 設置報警 amp 網絡狀態 一、登陸Zabbix服務器做以下操作: 1.fping安裝 wget http://www.fping.org/dist/fping-3.16.tar.gz tar zxvf fping-3.16.

優酷客戶電腦版去廣告補丁 v 1.0

優酷 用於屏蔽優酷客戶端播放視頻廣告。 https://pan.baidu.com/s/1bptk69h優酷客戶端電腦版去廣告補丁 v 1.0

強制Lync 客戶關閉歷史會話記錄

skype 聊天記錄 lync 歷時對話記錄 默認情況下Lync客戶端的歷史聊天記錄會保存在outlook中,如果要關閉集成在客戶端可以手動 將及時消息對話保存到電子郵件的"對話歷史記錄"文件夾中對話框的勾去掉。如果想要強制所有的客戶端不保存對話歷史記錄可以使用命令強制關閉打開Skype po

Security-OAuth2.0 密碼模式客戶實現

super temp auto bsp mas es2017 success ann turn 我的OAuth2.0 客戶端項目目錄 pom 的配置 <?xml version="1.0" encoding="UTF-8"?> <project x

java在線聊天項目0.4版本 制作服務接收連接,客戶連接功能 新增客戶窗口打開時光標指向下邊文本域功能,使用WindowListener監聽WindowAdapter

內部 frame visible [] one exit eve awt dap 建一個服務端類ChatServer,用於設置端口接收連接 package com.swift; import java.io.IOException; import java.net.Se

java在線聊天項目0.6版 解決客戶關閉後異常問題 dis.readUTF()循環讀取已關閉的socket

異常 oid jpanel read pen false tput ets java.net 服務端對try catch finally重新進行了定義,當發生異常,主動提示,或關閉出現異常的socket 服務器端代碼修改如下: package com.swift; im

java在線聊天項目0.9版 實現把服務接收到的信息返回給每一個客戶窗口中顯示功能之客戶接收

nec 一個 out for tex ava 添加 implement com 客戶端要不斷接收服務端發來的信息 與服務端不斷接收客戶端發來信息相同,使用線程的方法,在線程中循環接收 客戶端修改後代碼如下: package com.swift; import java.

Spark記錄-Spark-Shell客戶操作讀取Hive數據

osi scrip shuff gist onf his serial rpc tab 1.拷貝hive-site.xml到spark/conf下,拷貝mysql-connector-java-xxx-bin.jar到hive/lib下 2.開啟hive元數據服務:hive

Vue2.0 demo:百度百聘第三方web客戶

項目 tps 2.0 aip gpo 三方 .com web客戶端 git github地址:https://github.com/axel10/baipin_vue 項目地址:https://vcollection.org/baipin/Vue2.0 demo:百度百聘第

[Python Study Notes]CS架構遠程訪問獲取信息--Clientv1.0

loop ble python command error: ace class lac height 更新內容:1.添加entry欄默認ip和port口2.修正退出功能3.添加退出自動關閉窗口功能4.優化cpu顯示為固定保留兩位小數‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘

Zabbix 3.0.X 配置客戶自動註冊(Auto-Registration)

zabbix auto_registration 自動註冊 一、客戶端配置 1、配置zabbix官方源 [root@node11 ~]# rpm -iUh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el