首页 > 代码库 > Socket--Java
Socket--Java
Server.java
1 package socket; 2 3 import java.io.BufferedReader; 4 import java.io.DataInputStream; 5 import java.io.DataOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.InputStreamReader; 9 import java.io.OutputStream; 10 import java.net.ServerSocket; 11 import java.net.Socket; 12 13 public class Server { 14 //监听的端口 15 public static final int PORT = 54039; 16 17 public static void main(String[] args) 18 { 19 new Server().start(); 20 } 21 22 //启动监听线程的方法 23 public void start() 24 { 25 ServerSocket serverSocket = null; 26 try { 27 //新建一个ServerSocket对象,监听PORT端口,可能会抛出IOException 28 serverSocket = new ServerSocket(PORT); 29 System.out.println("serverScoket:" + serverSocket); 30 //循环监听 31 while(true) 32 { 33 //获取客户端连接,如果没有则阻塞 34 Socket clientSocket = serverSocket.accept(); 35 //启动线程处理监听到的数据并启动线程 36 new Thread(new DataRunnable(clientSocket)).start(); 37 38 } 39 } catch (IOException e) { 40 e.printStackTrace(); 41 } finally{ 42 if (null != serverSocket) 43 { 44 try { 45 serverSocket.close(); 46 System.out.println("close serverSocket success!"); 47 } catch (IOException e) { 48 System.out.println("close serverSocket failed!"); 49 } 50 } 51 } 52 53 } 54 55 /** 56 * 处理监听信息的job 57 */ 58 private class DataRunnable implements Runnable 59 { 60 Socket client; 61 62 public DataRunnable(Socket client) { 63 super(); 64 this.client = client; 65 } 66 67 public void run() { 68 try { 69 //读取客户端socket取输入流,包装成DataInputStream 70 DataInputStream dataIn = new DataInputStream(client.getInputStream()); 71 DataOutputStream dataOut = new DataOutputStream(client.getOutputStream()); 72 String content = dataIn.readUTF();//有read其他格式的方法,具体见api 73 //打印到控制台 74 System.out.println("content read in from client:" + content); 75 76 //向客户端回复信息 77 System.out.println("请输入要回复的内容:"); 78 String reply = new BufferedReader(new InputStreamReader(System.in)).readLine(); 79 dataOut.writeUTF(reply); 80 81 if("Close".equals(content)) 82 { 83 System.out.println("client has been closed ,i want to be closed too"); 84 } 85 dataIn.close(); 86 dataOut.close(); 87 } catch (IOException e) { 88 e.printStackTrace(); 89 } 90 91 } 92 93 } 94 }
Client.java
1 package socket; 2 3 import java.io.BufferedReader; 4 import java.io.DataInputStream; 5 import java.io.DataOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.InputStreamReader; 9 import java.net.Socket; 10 import java.net.UnknownHostException; 11 12 public class Client { 13 public static final String ADDR = "localhost";//监听本机 14 public static final int PORT = 54039;//端口 15 16 public static void main(String[] args) 17 { 18 while(true) 19 { 20 Socket client = null; 21 DataInputStream dataIn = null; 22 DataOutputStream dataout = null; 23 try { 24 //创建客户端socket连接到主机服务器端 25 client = new Socket(ADDR, PORT); 26 27 dataIn = new DataInputStream(client.getInputStream()); 28 dataout = new DataOutputStream(client.getOutputStream()); 29 30 //向服务器发送数据 31 System.out.println("请输入数据:"); 32 String content = new BufferedReader(new InputStreamReader(System.in)).readLine(); 33 dataout.writeUTF(content); 34 35 //读取服务器端返回的数据 36 String reply = dataIn.readUTF(); 37 System.out.println("server reply:" + reply); 38 39 } catch (UnknownHostException e) { 40 // TODO Auto-generated catch block 41 e.printStackTrace(); 42 } catch (IOException e) { 43 // TODO Auto-generated catch block 44 e.printStackTrace(); 45 } 46 finally{ 47 try { 48 if(null!=dataIn) dataIn.close(); 49 if(null!=dataout) dataout.close(); 50 if(null!=client) client.close(); 51 } catch (IOException e) { 52 // TODO Auto-generated catch block 53 e.printStackTrace(); 54 } 55 } 56 } 57 } 58 }
Socket--Java
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。