Simply Implementing Communication By Muti-Thread From Socket
2015-12-23 16:42
357 查看
<1>:Socket should always be instant by whichever both Server and Client <2>:Set conllection by ServerSocket. <3>:Getting data from Client and Responsing <4>:Shut down system resource(include Stream and Socket) //Server: import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class MServer { public static void main(String[] args){ try { int count=0;//Counting the total number of Client @SuppressWarnings("resource") //Setting ServerSocket's instance and signing the Port【>1024】 ServerSocket serverSocket=new ServerSocket(5545); System.out.println("[SERVER]Server is Loading...\n");// while(true){ //Tasking the accept()Method to get instance of Socket. Socket clientSocket=serverSocket.accept(); MThread mThread=new MThread(clientSocket); mThread.start(); count++; System.out.println("[SERVER]Current total count of Client: "+count); } //while() will run for ever until shuting down by yourself //clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } //Client import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class MClient { public static void main(String[] args){ try { //Setting Socket and OutputStream for sending requsting infformation to Server //****************************************** Socket clientSocket=new Socket("localhost",5545); OutputStream outputStream=clientSocket.getOutputStream(); PrintWriter printWriter=new PrintWriter(outputStream); printWriter.write("[CLIENT]UserName:WXM Password:123"); printWriter.flush(); clientSocket.shutdownOutput(); //****************************************** //Setting InputStream for getting responsing from Server //******************************** InputStream inputStream=clientSocket.getInputStream(); BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream)); String information=null; while((information=bufferedReader.readLine())!=null) {System.out.println("[CLIENT]Client is Logining.....\n"+ information);} //******************************** //Shutting down the resource when Finishing all of communicatin //************************************** bufferedReader.close(); inputStream.close(); printWriter.close(); outputStream.close(); //************************************* } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //We have to deal with the Exception from Input/Output-Stream //It is appropriate that Throwing the Exception by Throws and use try-catch-finally } } //Thread import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; public class MThread extends Thread{ Socket clientSocket=null; public MThread(Socket clientSocket){ this.clientSocket=clientSocket; } public void run(){ InputStream input = null; try { input = clientSocket.getInputStream(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } InputStreamReader inputStreamReader=new InputStreamReader(input); BufferedReader bufferedReader=new BufferedReader(inputStreamReader); String information=null; try { while((information=bufferedReader.readLine())!=null) {System.out.println("[SERVER]Server is waiting and loading.....\n"+information);} } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { clientSocket.shutdownInput(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //************************************ //Setting a InputStream to response the request from Client //************************************ OutputStream outputStream = null; try { outputStream = clientSocket.getOutputStream(); } catch (IOException e) { e.printStackTrace(); } PrintWriter printWriter=new PrintWriter(outputStream); printWriter.write("[SERVER]Logined yet:"); printWriter.flush(); printWriter.close(); try { if(outputStream!=null) outputStream.close(); } catch (IOException e) { e.printStackTrace(); } try { if(bufferedReader!=null) bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } try { if(inputStreamReader!=null) inputStreamReader.close(); } catch (IOException e) { e.printStackTrace(); } try { if(input!=null) input.close(); } catch (IOException e) { e.printStackTrace(); } try { if(clientSocket!=null) clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } /* //Server [CLIENT]Client is Logining..... [SERVER]Logined yet: //Client [SERVER]Server is Loading... [Client]IP Address of Current Client:127.0.0.1 [SERVER]Current total count of Client: 1 [SERVER]Server is waiting and loading..... [CLIENT]UserName:WXM Password:123 [Client]IP Address of Current Client:127.0.0.1 [SERVER]Current total count of Client: 2 [SERVER]Server is waiting and loading..... [CLIENT]UserName:WDH Password:456 */
TCP (Transmission Control Protocol)provides reliable connection, ordered, and error-checked delivery of a stream of octesed between applications running on hosts communicating over an IP network. TCP is the protocol that major Internet applications such as WWW ,Email and so on.
UDP(User datagram Protocol) provides checksums for data integrity, and port numbers for addressing different functions at the source and destination of the datagram.
Coding for TCP&UDP with Muti-Thread by Socket is so significant and you can get your programming for chating or others .
Thx , Congratulations!
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Linux socket 初步
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序