Java套接字。服務(wù)器-客戶端通信
您正在使用readLine()哪個(gè)期望換行符。n在您發(fā)送的郵件中添加或不使用readLine()。
解決方法我試圖用沒有g(shù)ui的服務(wù)器連接帶有g(shù)ui的客戶端。連接已完成,但我看不到這兩個(gè)應(yīng)用程序之間的任何消息。(我應(yīng)該在客戶端中找到SERVERHERE,在服務(wù)器中找到CLIENT HERE)
客戶端連接代碼:
@Overridepublic void ClientRunning(){ try { connectToServer();setStreams();ClientRun(); }catch(EOFException oefException){showMessage('n Client terminated the connectionn'); }catch(IOException ioException){ioException.printStackTrace(); }finally{close(); }}public void connectToServer() throws IOException{ showMessage('Attempting Connection... n'); connection = new Socket(InetAddress.getByName(serverIP),6789); showMessage('Connected to: '+ connection.getInetAddress().getHostName());}public void setStreams() throws IOException{ output = new PrintWriter(connection.getOutputStream(),true); output.flush(); input= new BufferedReader(new InputStreamReader(connection.getInputStream())); showMessage('n Streams are now set. n');}public void close(){ showMessage('n closing...'); try{ output.close(); input.close(); connection.close(); }catch(IOException ioException){ioException.printStackTrace(); }}public void showMessage(final String text){ SwingUtilities.invokeLater(new Runnable(){public void run(){ cwindow.append(text);} });}public void sendMessage(String message){ output.write('CLIENT - '+message); output.flush(); showMessage('nCLIENT - '+message);}private void ClientRun() throws IOException{ String message='CLIENT HERE!'; sendMessage(message); do{try{ message=input.readLine(); showMessage('n'+message);}catch(EOFException eofException){showMessage('n Server ended the connection!'); } }while(message!='EXIT'); }
(輸入和輸出在此客戶端類擴(kuò)展到的GUI類中定義。定義為“受保護(hù)的BufferedReader輸入;受保護(hù)的PrintWriter輸出;”)
另外,服務(wù)器代碼:
public class ServerClass {private ServerSocket server;private Socket connection;private BufferedReader input;private BufferedWriter output;public void startServer(){ try{server=new ServerSocket(6789,100);while(true){ try{waitForConnection();setStreams();ServerRunning(); }catch(EOFException eofException){showMessage('n Server ended the connection!'); }finally{ close();}} }catch(IOException ioException){ioException.printStackTrace(); }}private void waitForConnection() throws IOException{ showMessage('Waiting for someone to connect... n'); connection=server.accept(); showMessage('Now connected to '+ connection.getInetAddress().getHostName());}private void setStreams() throws IOException{ output = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream())); output.flush(); input= new BufferedReader(new InputStreamReader(connection.getInputStream())); showMessage('n Streams are now set. n');}public void ServerRunning() throws IOException{ String message='SERVER HERE!'; sendMessage(message); do{try{ message=input.readLine(); showMessage('n'+message);}catch(EOFException eofException){showMessage('n Server ended the connection!'); } }while(message!='EXIT'); }private void close(){ showMessage('n Closing connections... n'); try{output.close();input.close();connection.close();}catch(IOException ioException){ ioException.printStackTrace();}}private void showMessage(String text){ System.out.println(text);}private void sendMessage(String message){ try{ output.write('SERVER - '+message);output.flush();showMessage(message); }catch(IOException ioException){System.out.println('n ERROR!'); }}
連接似乎還可以,所以我不會(huì)弄錯(cuò)。任何幫助,將不勝感激。
PS:我也嘗試在服務(wù)器中使用PrintWriter,并且還嘗試在流語句中嘗試try catch,問題仍然存在。
相關(guān)文章:
1. docker - 如何修改運(yùn)行中容器的配置2. nignx - docker內(nèi)nginx 80端口被占用3. angular.js - angularjs的自定義過濾器如何給文字加顏色?4. angular.js - angular內(nèi)容過長展開收起效果5. 關(guān)于docker下的nginx壓力測(cè)試6. 為什么我ping不通我的docker容器呢???7. docker-machine添加一個(gè)已有的docker主機(jī)問題8. python3.x - python連oanda的模擬交易api獲取json問題第五問9. 域名解析在Ubuntu64 9.04計(jì)算機(jī)上的Java應(yīng)用程序中不起作用所有其他軟件可以正確解析DNS10. java - SSH框架中寫分頁時(shí)service層中不能注入分頁類
