200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > (java)socket全双工长连接通信实例

(java)socket全双工长连接通信实例

时间:2020-03-18 16:37:06

相关推荐

(java)socket全双工长连接通信实例

(借鉴备忘)直接上代码:

client:

import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.Reader;import .Socket;import java.nio.CharBuffer;public class TestSocketClient {public static void main(String[] args) {// TODO Auto-generated method stubnew TestSocketClient().start();}class SendThread extends Thread{private Socket socket;public SendThread(Socket socket){this.socket=socket;}@Overridepublic void run(){while(true){try{Thread.sleep(1000); String send="<SOAP-ENV:Envelope>"+System.currentTimeMillis()+"</SOAP-ENV:Envelope>";PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));pw.write(send);pw.flush();}catch(Exception e){e.printStackTrace();}}}}class ReceiveThread extends Thread{private Socket socket;public ReceiveThread(Socket socket){this.socket=socket;}@Overridepublic void run(){while(true){try{Reader reader=new InputStreamReader(socket.getInputStream());CharBuffer charbuffer=CharBuffer.allocate(8192);int index=-1;while((index=reader.read(charbuffer))!=-1){charbuffer.flip();//设置从0到刚刚读取到的位置System.out.println("client:"+charbuffer.toString());}}catch(Exception e){e.printStackTrace();}}}}public void start(){try{Socket socket=new Socket("127.0.0.1",18889);new SendThread(socket).start();new ReceiveThread(socket).start();}catch(Exception e){e.printStackTrace();}}}

server:

import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.Reader;import java.io.Writer;import .ServerSocket;import .Socket;import java.nio.CharBuffer;import java.util.Date;public class TestSocketServer {private final static String SOAP_BEGIN = "<SOAP-ENV:Envelope"; private final static String SOAP_END = "</SOAP-ENV:Envelope>"; public static void main(String[] args) {// TODO Auto-generated method stubTestSocketServer testserver=new TestSocketServer();testserver.start();}public void start(){try{ServerSocket serversocket=new ServerSocket(18889);while(true){Socket socket=serversocket.accept();new SocketThread(socket).start();}}catch(Exception e){e.printStackTrace();}}class SocketThread extends Thread{private Socket socket;private String temp;public SocketThread(Socket socket){this.socket=socket;}public Socket getsocket(){return this.socket;}public void setsocjet(Socket socket){this.socket=socket;}@Overridepublic void run(){try{Reader reader=new InputStreamReader(socket.getInputStream());Writer writer=new PrintWriter(new OutputStreamWriter(socket.getOutputStream(),"GBK"));CharBuffer charbuffer=CharBuffer.allocate(8192);int readindex=-1;while((readindex=reader.read(charbuffer))!=-1){charbuffer.flip();temp+=charbuffer.toString();if(temp.indexOf(SOAP_BEGIN)!=-1 && temp.indexOf(SOAP_END)!=-1){//System.out.println(new Date().toLocaleString()+"server:"+temp);temp="";writer.write("receive the soap message hahahah");writer.flush();}else if(temp.indexOf(SOAP_BEGIN)!=-1){temp=temp.substring(temp.indexOf(SOAP_BEGIN));}if(temp.length()>1024*16){break;}}}catch(Exception e){e.printStackTrace();}finally{if(socket!=null){try{if(!socket.isClosed()){socket.close();}}catch(Exception e){e.printStackTrace();}}}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。