Java套接字。服务器-客户端通信
您正在使用readLine()哪个期望换行符。n在您发送的邮件中添加或不使用readLine()。
解决方法我试图用没有gui的服务器连接带有gui的客户端。连接已完成,但我看不到这两个应用程序之间的任何消息。(我应该在客户端中找到SERVERHERE,在服务器中找到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'); }
(输入和输出在此客户端类扩展到的GUI类中定义。定义为“受保护的BufferedReader输入;受保护的PrintWriter输出;”)
另外,服务器代码:
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!'); }}
连接似乎还可以,所以我不会弄错。任何帮助,将不胜感激。
PS:我也尝试在服务器中使用PrintWriter,并且还尝试在流语句中尝试try catch,问题仍然存在。
相关文章:
1. javascript - 怎样定位一个动作调用了哪个js,不打断点调试?2. javascript - webpack 打包 reactjs项目 css 分离3. javascript - vuex中子组件无法调用公共状态4. Span标签5. javascript - ios上fixed定位问题,定位在底部的按钮不显示了,但是又可以点击到,换了一个类名就可以显示了,但是设置的字体大小却失效了6. javascript - 请教移动端从详情页返回到列表页原来位置的问题?7. javascript - 关于微信扫一扫的技术问题8. javascript - (_a = [""], _a.raw = [""],....); js一个小括号的是什么意思?9. javascript - js正则替换日期格式问题10. javascript - Vue.js的ElementUI库中,如何主动触发checkbox组件的change事件?
