一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java搭建一個Socket服務器響應多用戶訪問

java搭建一個Socket服務器響應多用戶訪問

2020-08-10 19:07沈君 Java教程

本篇文章主要介紹了java搭建一個Socket服務器響應多用戶訪問,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

當我們搭建了一個Socket服務端,是需要去響應多用戶的訪問的。此時,我們就要使用多線程,為每個訪問的用戶建立一個線程來響應該用戶的訪問。

具體實現,看如下代碼:

java" id="highlighter_340629">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.sun.socket;
import Java.io.IOException;
import java.NET.*;
import java.io.*;
import java.util.*;
 
/**
* Description:
* 搭建一個Socket服務器響應多用戶訪問
* @author Lee
* */
public class ServerSocketDemo {
ArrayList MSG = new ArrayList<>();
ArrayList RES = new ArrayList<>();
 
/**
 * Description:
 * 初始化數據
 * */
public void init(){
  MSG.add("hellow");
  RES.add("hi");
}
 
/**
 * Description:
 * 搭建一個Socket服務器響應多個用戶訪問
 * */
public void test1(){
  init();
  ServerSocket server = null;
 
  try{
    //以指定端口搭建一個Socket服務端
    server = new ServerSocket(12000); 
 
    //等待客戶端Socket實例,并創建一個線程去響應該客戶單實例
    while(true){
      new Response(server.accept()).start();;
    }
 
  }catch(IOException e){
    e.printStackTrace();
  }finally{
    try{
      server.close();
    }catch(IOException e){
      e.printStackTrace();
    }
 
  }
}
 
/**
 * Description:
 * 根據用戶輸入的內容,返回相應的內容
 *
 * @param msg 客戶端輸入的內容
 * @return 返回服務端回復的內容
 * */
public String getMsg(String msg){
  String res = "Are you kidding me?Please speak English.";
 
  for(int i=1;i<MSG.size();i++){
    if(msg.contains(MSG.get(i))){
      res = RES.get(i);
    }
  }
 
  return res;
}
 
 
public static void main(String[] args) {
  // TODO Auto-generated method stub
  new ServerSocketDemo().test1();
}
 
/**
 * Description:
 * 響應用戶
 * @author Lee
 * */
class Response extends Thread{
  Socket client;
 
  /**
   * Description:
   * 默認構造器
   * */
  public Response(){}
  /**
   * Description:
   * 初始化Socket
   * */
  public Response(Socket client){
    this.client = client;
  }
 
  @Override
  public void run(){
    Scanner input = null;
    PrintWriter output = null;
 
    try{
      //獲取用戶端的輸入和輸出流
      input = new Scanner(client.getInputStream());
      output = new PrintWriter(client.getOutputStream());
 
      output.println("歡迎訪問!");
      output.flush();
 
      //等待客戶端的輸入
      String content = null;
      while(input.hasNext()){
        content = input.nextLine();
 
        //根據用戶端的輸入,做出相應的反應
        if(content.equalsIgnoreCase("quit")){
          break;
        }else{
          output.println(getMsg(content));
          output.flush();
        }
      }
 
    }catch(IOException e){
      e.printStackTrace();
    }finally{
      //關閉資源
      input.close();
      output.close();
    }
 
 
  }
}
}

1、我們可以寫一個小小測試工具類,來測試一下public String getMsg(String msg)方法。

對該類右鍵,選擇new新建一個JUnit Test Case 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.sun.socket;
import org.junit.Assert;
import org.junit.Test;
public class ServerSocketDemoTest {
  @Test
  public void testGetMsg() {
    try{
      //調用該方法,并與其目標值進行對比。
      String msg = new ServerSocketDemo().getMsg("在嗎");
      Assert.assertEquals("gun!", msg);
 
    }catch(Exception e){
      e.printStackTrace();
    }
  }
 
}

2、使用apche JMeter工具對該服務端進行壓力測試

(1)打開Apache JMeter,右鍵測試計劃->添加->Threads(Users)->Setup Thread Group

java搭建一個Socket服務器響應多用戶訪問

(2)設置線程屬性(線程數,循環次等)

java搭建一個Socket服務器響應多用戶訪問

(3)右鍵添加->simpler->HTTP請求

java搭建一個Socket服務器響應多用戶訪問

(4)設置屬性,點擊運行就可以進行壓力測試了。

java搭建一個Socket服務器響應多用戶訪問

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/qq1131410679/article/details/55051195

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产原创一区二区 | 亚洲精品一区波多野结衣 | 欧美色青| a∨79成人网| 动漫美女3d被爆漫画 | 国内久久婷婷综合欲色啪 | 国产一级特黄aa大片免费 | 第一次破学生处破 | 无人区免费一二三四乱码 | 亚洲国产日韩成人综合天堂 | 亚洲成人网在线 | 纲手被comic天堂 | 久久国产精品无码视欧美 | 黑人好大好硬好深好爽想要h | 国产成人高清视频 | melody中文字幕 | 欧亚精品一区二区三区 | sxx免费看视频在线播放 | 国产xx肥老妇视频奂费 | 国产精品高清一区二区三区 | 91久久精品国产一区二区 | 大陆国产精品视频 | 精品一区二区高清在线观看 | 国产一区日韩二区欧美三 | 羞羞色男人的天堂伊人久久 | 俄罗斯引擎首页进入 | 色久激情 | 暖暖免费高清完整版观看日本 | 人禽l交免费视频观看+视频 | 韩国一大片a毛片女同 | 精品国产剧情在线观看 | 婷婷综合久久 | 女人pp被扒开流水了 | 日本又大又硬又粗的视频 | 国产成年人视频 | 亚洲视频一区二区在线观看 | 草啪啪| 亚洲精品乱码久久久久久蜜桃 | 日本加勒比无码av | 四虎在线免费播放 | 娇妻与公陈峰姚瑶小说在线阅读 |