zoukankan      html  css  js  c++  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 }
    View Code

    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 }
    View Code
  • 相关阅读:
    Dynamics CRM The difference between UserId and InitiatingUserId in Plugin
    Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
    Dynamics CRM2013 从subgrid中打开快速创建窗体创建数据
    求逆元 HDU1576
    多个数的最小公倍数 HDU1019
    快速幂 HDU3003
    扩展欧几里德算法求逆元1
    筛法求素数 函数模板
    矩阵模板
    快速幂取模函数 递归模板
  • 原文地址:https://www.cnblogs.com/cici20166/p/6193365.html
Copyright © 2011-2022 走看看