zoukankan      html  css  js  c++  java
  • Java Socket TCP编程(Server端多线程处理)

     1 package com;
     2 
     3 import java.io.*;
     4 import java.net.Socket;
     5 
     6 /**
     7  * Socket Client
     8  * <p>
     9  * Created by Administrator on 2018/5/2.
    10  */
    11 public class Client {
    12 
    13     public static void main(String[] args) {
    14 
    15         try {
    16 
    17             // 1.初始化客户端socket连接
    18             Socket socket = new Socket("localhost", 8888);
    19 
    20             // 2.client发送消息
    21             OutputStream outputStream = socket.getOutputStream();
    22             PrintWriter printWriter = new PrintWriter(outputStream);
    23             printWriter.write("[name:jim, pwd:123]");
    24             printWriter.flush();
    25             socket.shutdownOutput();
    26 
    27             // 3.client接收消息
    28             InputStream inputStream = socket.getInputStream();
    29             InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    30             BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    31             String str;
    32             while ((str = bufferedReader.readLine()) != null) {
    33                 System.out.println("I am Client, now get message from Server:" + str);
    34             }
    35 
    36             // 4.关闭资源
    37             bufferedReader.close();
    38             inputStreamReader.close();
    39             inputStream.close();
    40 
    41             printWriter.close();
    42             outputStream.close();
    43             socket.close();
    44 
    45         } catch (IOException e) {
    46             e.printStackTrace();
    47         }
    48     }
    49 }
     1 package com;
     2 
     3 import java.io.*;
     4 import java.net.ServerSocket;
     5 import java.net.Socket;
     6 
     7 /**
     8  * Socket Server
     9  * <p>
    10  * Created by Administrator on 2018/5/2.
    11  */
    12 public class Server {
    13 
    14     public static void main(String[] args) {
    15 
    16         try {
    17 
    18             // 初始化服务端socket连接,并监听8888端口的socket请求
    19             ServerSocket serverSocket = new ServerSocket(8888);
    20 
    21             System.out.println("****** I am Server, now begin to wait the client ******");
    22 
    23             int count = 0;
    24             
    25             // 处理socket请求
    26             Socket socket = null;
    27             while (true) {
    28 
    29                 socket = serverSocket.accept();
    30                 ServerThread serverThread = new ServerThread(socket);
    31                 System.out.println("client host address is: " + socket.getInetAddress().getHostAddress());
    32                 serverThread.start();
    33                 count++;
    34                 System.out.println("now client count is: " + count);
    35 
    36             }
    37         } catch (IOException e) {
    38             e.printStackTrace();
    39         }
    40     }
    41 }
     1 package com;
     2 
     3 import java.io.*;
     4 import java.net.Socket;
     5 
     6 /**
     7  * Created by Administrator on 2018/5/3.
     8  */
     9 public class ServerThread extends Thread {
    10 
    11     private Socket socket;
    12 
    13     public ServerThread(Socket socket) {
    14         this.socket = socket;
    15     }
    16 
    17     @Override
    18     public void run() {
    19 
    20         InputStream inputStream = null;
    21         InputStreamReader inputStreamReader = null;
    22         BufferedReader bufferedReader = null;
    23         OutputStream outputStream = null;
    24         PrintWriter printWriter = null;
    25 
    26         try {
    27 
    28             // server接收消息
    29             inputStream = socket.getInputStream();
    30             inputStreamReader = new InputStreamReader(inputStream);
    31             bufferedReader = new BufferedReader(inputStreamReader);
    32 
    33             String str;
    34             if ((str = bufferedReader.readLine()) != null) {
    35                 System.out.println("I am Server, now get message from Client: " + str);
    36             }
    37             socket.shutdownInput();
    38 
    39             // server发送消息
    40             outputStream = socket.getOutputStream();
    41             printWriter = new PrintWriter(outputStream);
    42             printWriter.write("[welcome to you!]");
    43             printWriter.flush();
    44 
    45         } catch (IOException e) {
    46             e.printStackTrace();
    47         } finally {
    48             // 关闭资源
    49             try {
    50                 if (printWriter != null) {
    51                     printWriter.close();
    52                 }
    53                 if (outputStream != null) {
    54                     outputStream.close();
    55 
    56                 }
    57                 if (bufferedReader != null) {
    58                     bufferedReader.close();
    59                 }
    60                 if (inputStreamReader != null) {
    61                     inputStreamReader.close();
    62                 }
    63                 if (inputStream != null) {
    64                     inputStream.close();
    65                 }
    66                 if (socket != null) {
    67                     socket.close();
    68                 }
    69             } catch (IOException e) {
    70                 e.printStackTrace();
    71             }
    72         }
    73     }
    74 }
  • 相关阅读:
    第十五篇:在SOUI中消息通讯
    为GDI函数增加透明度处理
    第十四篇:在SOUI中使用定时器
    第十三篇:在SOUI中使用有窗口句柄的子窗口
    第十二篇:SOUI的utilities模块为什么要用DLL编译?
    第十一篇:SOUI系统资源管理
    第十篇:扩展SOUI的控件及绘图对象(ISkinObj)
    第九篇:在SOUI中使用多语言翻译
    第八篇:SOUI中控件事件的响应
    Linked List Cycle
  • 原文地址:https://www.cnblogs.com/jiangyi-uestc/p/8987942.html
Copyright © 2011-2022 走看看