已采納回答 / qq_海賊_0
你的代碼寫錯了,服務器端socket是由serverSocket.accept();來初始化,這樣獲取客戶端傳來的數據,除此之外你的User類還需要實現序列化接口,implements Serializable,最好把set/get方法補上,JavaBean的習慣養好,另外如果報端口號占用的異常,你就把端口號改一下,因為你按老師步驟實踐可能8888端口之前已經用過了。<...code...>
2016-07-30
已采納回答 / 江feng
這個原因建議去了解一個,原碼、反碼、補碼的概念。IP地址是INT 類型的例如: 130在計算機中表示二進制位00000000 00000000 00000000 10000010 ,當它存入到字節數組中,由于一個字節有8位,故,存入后130為 10000010而二進制中最高位為符號位 (0代表整數,1代表負數),所以1000 0010表示的是一個負數,負數在計算機中是用的補碼表示的,要求的原碼,1000 0010 要先 -1 得:1000 0001 在求反后得其原碼,0111 1110 轉化為10進制為 ...
2016-07-29
已采納回答 / 漢娜之眼
既然圖片能寫入,為什么文字不行,按理說用的一個流如果沒有格式限制就沒有問題,這我也看不出什么問題。不過給你幾個建議,你可以調試一下看看傳文本的時候哪里阻塞了導致數據過不去,還有catch塊不要拋出太多,可以用父類代替,最重要的一點。。。為什么沒注釋,還好代碼不長也不難,要是復雜點真想回答的看一眼也覺得煩。。。
2016-07-03
已采納回答 / SoyaDokio
解決辦法:在Server類的第33、34行像講師一樣插入這句代碼:s.shutdownInput();在Server類的原第38、39行像講師一樣插入這句代碼:s.shutdownOutput();在Client類的第24、25行像講師一樣插入這句代碼:socket.shutdownOutput();在Client類的原第31、32行像講師一樣插入這句代碼:socket.shutdownInput();p.s. 建議把Server類的第30行代碼放到28或29行之前。
2016-07-01
已采納回答 / 心and心
讀取數據有很多種方法,各有各的特點比如說字節流中,InputStream是最基本的,FileInputStream用來讀取文件,DataInputStream適用于讀取各種類型的數據,BufferedInputStream加緩沖可以提高IO性能字符流中也有相應的類,InputStreamReader,FileReader,BufferedReader其中BufferedReader有一個方法readLine(),可以一行一行讀取,這個方法其他的都沒有,使用起來比較方便再看它的構造方法,需要傳入Reader...
2016-06-28
已采納回答 / SoyaDokio
方法有三,下面依次道來。主菜單操作:選中目標代碼 - & Bl Source?- &g Surround With?- &代碼 Try/catch Block<...圖片...>右鍵快捷菜單操作:選中目標代碼 - &代碼 單擊右鍵 - &ift Surround With?- & Bl Try/catch B...
2016-06-27
已采納回答 / 慕粉1466417893
1. 為什么要用PrinterWriter?因為我們寫程序的時候,往Socket里寫數據,寫的都是文本,都是字符,所以PrinterWriter用于程序員寫入數據。因為PrinterWriter是包裝的OutputStream,底層實現數據傳輸的時候,會把我們寫入的字符轉換成二進制數據,就是字節流,所以傳輸的時候都是字節流傳輸。2. 為什么要用InputStream接收?上面講到了,底層傳輸的時候,都是字節流,所以要用InputStream讀取,還要用BufferedReader轉換成字符流,也是為了方便...
2016-06-21
已采納回答 / SoyaDokio
有一種解釋是如果需要向流中輸出的是文字之類的字符型數據,則使用這個組合:<...code...>如果需要向流中輸出的是文件之類的二進制型數據,則使用這個組合:<...code...>
2016-06-07
已采納回答 / aryong
客戶端pw.flush(); socket.shutdownInput();//關閉流是不是應該關閉輸出流 socket.shutdownOutput();//關閉流
2016-06-04